[英]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.