【问题标题】:Selecting options from Auto Complete Dropdown using selenium web driver in python在 python 中使用 selenium web 驱动程序从自动完成下拉列表中选择选项
【发布时间】:2018-01-18 20:50:24
【问题描述】:

我必须从页面上的下拉菜单中选择选项。我尝试了以下代码,但它显示语法错误。有人可以帮我解决这个问题吗?

web_element x = driver.find_element_by_xpath('//*[@id="txtSearchPhone"]')
Select sel = new Select(x)
sel.select_by_value("Iphone")

我也尝试过 Web_element,WebElement。 但这显示第一行的语法错误。

web_element x = driver.find_element_by_xpath('//*[@id="txtSearchPhone"]')
            ^
   SyntaxError: invalid syntax

【问题讨论】:

标签: python selenium drop-down-menu autocomplete


【解决方案1】:

您输入的不是有效的 Python。你在看一个实际的 Python 示例吗?

## not valid Python code.
web_element x = driver.find_element_by_xpath('//*[@id="txtSearchPhone"]')
Select sel = new Select(x)
sel.select_by_value("Iphone")

你需要做的是找到选择框...

select_box = driver.find_element_by_xpath('//*[@id="yourSelectBoxId"]')

比迭代你的选择框...

for i in select_box:
    if i.text == "some text":
        i.click();

在所有这些之前,您可能需要花一些时间学习 Python 语言。

【讨论】:

  • 是的,我明白了。我可以直接选择 Iphone,而不是创建循环吗?
  • 我不知道。这些天的一些下拉菜单在单击时会加载,这实际上取决于站点。大多数时候,我需要迭代选择框值以选择与我正在寻找的内容相匹配的正确文本或值。
  • 它显示错误'Webelement is not iterable'
  • 那是因为你一定选择了一个不是选择框的元素。
  • 是的,它是一个搜索框,而不是一个下拉框
【解决方案2】:

Python 是动态类型语言,在声明变量时不需要指定变量的类型。

a=10 创建一个 int 和

name="hello world" 创建一个字符串

【讨论】:

  • 谢谢,明白了!但这并没有解决我的问题。
【解决方案3】:

您可以使用以下代码块从建议中选择选项Apple iPhone 6 128GB

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path= r"C:\\Utility\\BrowserDrivers\\chromedriver.exe")
driver.maximize_window()
driver.get('https://tradein.vodafone.co.uk/#/topmodel')
driver.find_element_by_xpath("//input[@id='txtSearchPhone']").send_keys("Apple iPhone 6 128GB")
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='ui-menu-item']/a[contains(@id, 'ui-id-')][text()='Apple iPhone 6 128GB']")))
driver.find_element_by_xpath("//li[@class='ui-menu-item']/a[contains(@id, 'ui-id-')][text()='Apple iPhone 6 128GB']").click()

【讨论】:

  • 我仍然收到错误消息:“选择仅适用于
  • 错误说明了一切。 driver.find_element_by_id("txtSearchPhone") 返回的元素是input 标签不是选择标签。怎么申请Select sel = new Select(x)呢?
  • 你能分享相关的HTMLurl,如果是公开的吗?
  • tradein.vodafone.co.uk/#/topmodel 。我在搜索框中输入 Apple iPhone 6 128GB,它显示为下拉菜单。我想选择那个。
  • 非常感谢!!:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 2014-06-06
  • 2021-11-05
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多