簡體   English   中英

找不到硒元素下拉菜單python

[英]Selenium element cannot be found drop down menu 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帶有一堆鏈接,默認情況下是隱藏的。 所以我建議這樣的事情:

  1. 選擇當前的排序鏈接( <a )以打開其他選項的列表。 最簡單的方法是通過鏈接文本。 諸如ul[1]/li/div/類的選擇器只是令人困惑且不必要。 請注意,根據此操作之前的內容,可能還需要顯示此鏈接。
  2. 一旦新選項出現,請選擇它(即等待它,然后單擊)。

例如:

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()

元素//*[@id="DashSortByContainer"]/ul[1]/li/div/a是鏈接,而不是select。 這就是為什么您不能使用Select類的原因。
您需要click //*[@id="DashSortByContainer"]/ul[1]/li/div/a ,然后在DOM中找到具有值的元素,然后單擊所需的元素。

您可以在此處找到類似的問題以及可以用作參考的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM