找不到硒元素下拉菜单python

Posted

技术标签:

【中文标题】找不到硒元素下拉菜单python【英文标题】:Selenium element cannot be found drop down menu python 【发布时间】:2018-09-02 18:27:49 【问题描述】:

我在 eBay 网站上使用 Selenium WebDriver。我正在尝试将下拉菜单从最佳匹配更改为最低价格 + P&P。这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
sortdown = browser.find_element(By.XPATH, '//*[@id="DashSortByContainer"]/ul[1]/li/div/a')
sortselect = Select(sortdown)
sortselect.select_by_visible_text('Lowest price + P&P')

我使用 XPATH 以防元素是动态的。而且python仍然说找不到元素。任何人都可以帮忙吗?以下是结果右上角下拉菜单的示例链接:https://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=harley&_sacat=0

【问题讨论】:

【参考方案1】:

它显示的项目不是真正的Select 元素。它只是一个带有一堆链接的<ul,默认情况下是隐藏的。所以我会建议这样的事情:

    选择当前排序链接 (<a) 以打开其他选项列表。最简单的方法是通过链接文本。像ul[1]/li/div/ 这样的选择器只是令人困惑和不必要的。请注意,根据此操作之前的内容,您可能还需要显示此链接。 在新选项出现后选择它(即等待它,然后单击)。

例如:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(browser, 10)

# click link to display all options
sortdown = browser.find_element_by_link_text('Best Match')
sortdown.click()

# select a new option
lowestprice = wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'Lowest price + P&P')))
lowestprice.click()

【讨论】:

【参考方案2】:

元素//*[@id="DashSortByContainer"]/ul[1]/li/div/a 是一个链接,而不是选择。这就是为什么你不能使用Select 类。 您需要 //*[@id="DashSortByContainer"]/ul[1]/li/div/a 上的 click,然后在 DOM 中找到具有值的元素并单击您需要的元素。

你可以找到类似的问题here,答案可以作为参考。

【讨论】:

以上是关于找不到硒元素下拉菜单python的主要内容,如果未能解决你的问题,请参考以下文章

我如何测试使用硒在下拉菜单中按字母顺序对项目进行排序

如何使用 Selenium 和 Python 选择下拉菜单项(值或文本)? [复制]

顶部栏的自定义下拉菜单[关闭]

在自定义类下拉菜单 Xcode 8.3.2 中找不到自定义控制器类

Selenium - Python - 选择 - 下拉菜单链接

悬停时下拉菜单不显示列出的元素