【问题标题】:How to Input value from dropdown in selenium python?如何从 selenium python 的下拉列表中输入值?
【发布时间】:2020-06-23 18:55:48
【问题描述】:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select

EMAILFIELD = (By.ID, "username")
PASSWORDFIELD = (By.ID, "password")
LOGINBUTTON = (By.ID, "Login")
CLICKBUTTON= (By.ID, "thePage:rtForm:createButton")
QUICKFINDSEARCH = (By.ID, "quickFindInput")

browser = webdriver.Chrome(
    executable_path=r"C:/Users/RYadav/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Python 3.8/chromedriver.exe")
browser.get('https://fleet.my.salesforce.com/')

# wait for email field and enter email
WebDriverWait(browser, 5).until(EC.element_to_be_clickable(EMAILFIELD)).send_keys("ryadav@gmail.com")

# wait for password field and enter password
WebDriverWait(browser, 5).until(EC.element_to_be_clickable(PASSWORDFIELD)).send_keys("1234zxcvb")

# Click Login - same id?
WebDriverWait(browser, 5).until(EC.element_to_be_clickable(LOGINBUTTON)).click()

#direct new reportfield
browser.get('https://fleet.my.salesforce.com/reportbuilder/reportType.apexp')

#search the Users from dropdown and click button
select = Select(webdriver.find_element_by_id("quickFindInput"))
select.select_by_visible_text("Users")
WebDriverWait(browser, 5).until(EC.element_to_be_clickable(CLICKBUTTON)).click()

请建议如何从下拉列表中输入一个值到上面的代码。此代码引发属性错误。

    Traceback (most recent call last):
  File "C:/Users/RYadav/PycharmProjects/ElementProject/SalesforceUrl.py", line 30, in <module>
    select = Select(webdriver.find_element_by_id("quickFindInput"))
AttributeError: module 'selenium.webdriver' has no attribute 'find_element_by_id'

【问题讨论】:

    标签: python-3.x selenium selenium-webdriver drop-down-menu webdriver


    【解决方案1】:

    你离得很近。在整个程序中,您一直使用 browser 作为 WebDriver 实例。但在该行中通过不同的名称webdriver 调用:

    select = Select(webdriver.find_element_by_id("quickFindInput"))
    

    您需要将行更改为:

    select = Select(browser.find_element_by_id("quickFindInput"))
    

    【讨论】:

    • 它没有抛出任何错误,但它没有选择“用户”值并点击那里的创建按钮。目的还没有达到。请推荐
    • @ruchiyadav 这个答案是为了解决AttributeError: module 'selenium.webdriver' has no attribute 'find_element_by_id' 的问题,仅此而已。
    • 谢谢。如果您能就搜索框查询提出更多建议,我将不胜感激。应该怎么做
    • @ruchiyadav 实际上,在编写答案时,我尝试使用您发布的凭据登录,但我的登录尝试没有成功。否则我什至会在你问之前就给它:)
    • @ruchiyadav 如果它是&lt;select&gt; 节点,那么您就在正确的轨道上。但是我建议在调用 click()send_keys() 时始终诱导 WebDriverWait 并将 expected_conditions 设置为 element_to_be_clickable()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2020-08-02
    • 2017-04-21
    相关资源
    最近更新 更多