我正在嘗試使用 XPath 單擊按鈕,但無法找到該元素。在這里完成菜鳥。
這是我復制的按鈕元素:
<button _ngcontent-ygw-c218="" class="btn"><span _ngcontent-ygw-c218="" translate="">SHOW ALL</span></button>
這是我的編程:
ShowAll =driver.find_element_by_xpath('//*[@id="app-SelectComponents"]/div[1]/button[1]')
ShowAll.click()
我嘗試了以下我在網上找到的解決方案,但無濟于事(我也將 'btn' 替換為 'SHOW ALL',沒有運氣):
driver.switch_to.frame(driver.find_element_by_name('btn'))
ShowAll =driver.find_element_by_xpath('//*[@id="app-SelectComponents"]/div[1]/button[1]')
ShowAll.click()
driver.switch_to.default_content()
非常感激。
編輯:這是一張供參考的圖片。我做錯了什么或者我可以做些什么來解決這個問題?

uj5u.com熱心網友回復:
在要求 selenium 選擇它之前,您需要添加時間以確保該元素可用。試試這個:
import time
driver.switch_to.frame(driver.find_element_by_name('btn'))
time.sleep(5) #you can change the 5 depending on the number that works
ShowAll =driver.find_element_by_xpath('//*[@id="app-SelectComponents"]/div[1]/button[1]').click()
driver.switch_to.default_content()
uj5u.com熱心網友回復:
文本為SHOW ALL的元素在 an 內,<iframe>因此您必須:
誘導WebDriverWait使所需的幀可用并切換到它。
誘導WebDriverWait使所需元素成為可點擊的。
您可以使用以下任一定位器策略:
使用
CSS_SELECTOR:WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#iParts"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn > span[translate]"))).click()使用
XPATH:WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='iParts']"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn']/span[text()='SHOW ALL']"))).click()
注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
參考
您可以在以下位置找到一些相關的討論:
- iframe下處理#document的方法
- 通過 Selenium 和 python 切換到 iframe
- selenium.common.exceptions.NoSuchElementException:訊息:沒有這樣的元素:嘗試使用 selenium 單擊下一步按鈕時無法找到元素
- python中的硒:NoSuchElementException:訊息:沒有這樣的元素:無法找到元素
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411991.html
標籤:
