我正在嘗試根據文本(使用硒)單擊按鈕。例如,對于以下 HTML 標記:
<span class="MuiTab-wrapper jss483">Options</span>
我試過了:
driver.find_elements_by_xpath("//*[contains(text(), 'Options')]").click()
但是,Selenium 找不到任何帶有文本的元素:“ Options ”。
有任何想法嗎?
uj5u.com熱心網友回復:
您正在使用find_elements_by_xpath方法。它會給你一個 web 元素串列,而不是一個 web 元素。所以,你可以不適用.click()于結果
driver.find_elements_by_xpath("//*[contains(text(), 'Options')]")
你應該find_element_by_xpath改用這樣你的代碼
driver.find_element_by_xpath("//*[contains(text(), 'Options')]").click()
或單擊來自網路元素串列回傳器的第一個結果(或任何其他結果),如下所示
driver.find_elements_by_xpath("//*[contains(text(), 'Options')]")[0].click()
也可能您需要添加一些延遲/等待,以便在訪問元素之前加載元素。
或者您可能需要將該元素滾動到視圖中。
或者該元素可能在 iframe 內...
uj5u.com熱心網友回復:
請檢查dev tools(谷歌瀏覽器)我們是否有唯一的條目HTML DOM。
您應該檢查的 xpath :
//*[contains(text(), 'Options')]
或者
//span[contains(text(), 'Options')]
檢查步驟:
Press F12 in Chrome- >去element節- >做一個CTRL F- >再貼上xpath看看,如果你需要的element是越來越強調與1/1匹配的節點。
在 Selenium 中有 4 種點擊方式。
代碼試用1:
time.sleep(5)
driver.find_element_by_xpath("//span[contains(text(), 'Options')]").click()
代碼試用2:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Options')]"))).click()
代碼試用3:
time.sleep(5)
button = driver.find_element_by_xpath("//span[contains(text(), 'Options')]")
driver.execute_script("arguments[0].click();", button)
代碼試用4:
time.sleep(5)
button = driver.find_element_by_xpath("//span[contains(text(), 'Options')]")
ActionChains(driver).move_to_element(button).click().perform()
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
此外,find_elements回傳一個串列,將其更改為find_element您應該可以繼續進行。
或者使用串列索引指向 web 元素。
elems = driver.find_elements_by_xpath("//*[contains(text(), 'Options')]")
elems[0].click()
這是不推薦的方式。
uj5u.com熱心網友回復:
要單擊帶有文本的元素,Options您可以使用以下任一定位器策略:
使用
xpath:driver.find_element(By.XPATH, "//span[contains(@class, 'MuiTab-wrapper') and contains(., 'Options')]").click()
所需的元素是一個的JavaScript enabled元素,因此理想情況下,在元件上點擊你需要引起WebDriverWait的element_to_be_clickable(),你可以使用以下的定位策略:
使用
XPATH:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(@class, 'MuiTab-wrapper') and contains(., 'Options')]"))).click()注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/352319.html
下一篇:回滾然后從佇列接收相同的訊息
