簡體   English   中英

無論我如何嘗試都無法在Selenium中通過Xpath找到元素

[英]Can't find element by Xpath in Selenium no matter what I try

這是我在Selenium的第一次嘗試,我試圖創建一個程序來復制剪貼板並將其粘貼到soundcloud下載網站,但更改頁面后找不到元素。 這是我的代碼:

driver = webdriver.Chrome()
driver.get('https://scdownloader.io/')
driver.set_page_load_timeout(45)

# driver.implicitly_wait(60)
box = driver.find_element_by_xpath("//form/div/input") #text box
box.click()
box.send_keys(Keys.CONTROL, 'v')

nxt = driver.find_element_by_xpath("//form/button") #convert button
nxt.click()

driver.refresh()
driver.implicitly_wait(10) # seconds
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))

dl = driver.find_element_by_xpath("//div[@id='conversionForm']/form/button")
dl.click()

問題在於找到dl,我試圖解決它的嘗試是嘗試刷新,嘗試使用chrome中的硒插件找到的其他xpath地址,並嘗試切換到iframe,但是老實說,我不確定是否有iframe 。

任何幫助將非常感激!

您嘗試訪問的頁面不包含任何iframe。 您無需切換到iframe即可點擊下載按鈕。

您提供的代碼將剪貼板粘貼到輸入字段中,然后單擊轉換按鈕。 單擊轉換按鈕會加載另一個未顯示轉換按鈕的URL。 但是您的dl變量包含轉換按鈕元素引用。 您已再次為dl變量使用了convert按鈕的XPath。 單擊轉換按鈕后,下一頁將不可見。 這就是為什么找不到按鈕的原因。

另外,使用顯式等待而不是隱式等待。

以下代碼將打印下載鏈接。 如果發布的鏈接無效並且沒有下載鏈接,它將打印“ Invalid link”。 result變量包含一個列表。 它用於檢查結果是否可見或無異常。 要獲取下載鏈接按鈕,請使用resutl[0]

嘗試這個:

driver.get('https://scdownloader.io/')
wait = WebDriverWait(driver, 20)

box = wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@id='conversionForm']/form/div/input")))#text box
box.send_keys(Keys.CONTROL, 'v')

nxt = wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@id='conversionForm']/form/button")))#convert button
nxt.click()

wait.until(EC.visibility_of_element_located((By.XPATH,"//div[@id='result']")))

result = driver.find_elements_by_xpath("//div[@class='searchboxholder']//a")

if(len(result)>0):
    print(result[0].get_attribute("href"))
else:
    print("Invalid link")

要使用WebDriverWait,您必須導入以下內容:

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

暫無
暫無

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

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