python - 找不到硒元素下拉菜单python
问题描述
我在 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
解决方案
它显示的项目不是真实的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()
推荐阅读
- flutter - 当我尝试 IntroductionScreen() 时,发生错误
- selenium-chromedriver - Selenium ChromeDriver 不使用 Chrome 的设置
- python - model_to_dict:AttributeError:“str”对象没有属性“_meta”
- assembly - 如何将图像从磁盘加载到 vmem
- javascript - 使用 vanilla javascript 路由显示动态元素
- python - 为什么在 YOLOv5 中这两个结果不同?
- java - 在 Android Studio 中选择图像后应用退出(未调用 OnActivityResult)
- javascript - 从事件监听器传递字符串数组时,它会抛出一个错误,如下所示
- webpack - 如何将 webpack-dev-server 与 nodemon-webpack-plugin 一起使用?
- python - Python SQL 查询执行