簡體   English   中英

如何讓 Selenium Python 單擊按鈕元素?

[英]How do I make Selenium Python click on a button element?

所以我剛剛開始使用 Selenium for Python,我試圖點擊一個埋在幾個 div 元素中的按鈕元素; 我嘗試了很多東西,但沒有任何效果。 除了等待按鈕可點擊然后點擊它的最后一部分之外,代碼中的所有內容都有效。 我將不勝感激這里的一些幫助,謝謝。 :)

HTML:

html代碼

代碼試驗:

我的蟒蛇代碼

錯誤堆棧跟蹤:

我的python代碼錯誤

css 選擇器將成為你最好的朋友,

您應該始終希望添加盡可能多的屬性

maybe_later_css = 'button[class="btn btn-danger"]'
# type str, '<tag-name>[<attribute-name> = <attribute-value>]'

driver.find_element_by_css_selector(maybe_later_css).click()

所有元素都遵循這種格式,它的優越性和每次都按預期工作

唯一的復雜之處是當存在多個具有相同類名的按鈕時,在這種情況下,您應該找到不同的屬性來填充 [] 括號

單擊**Maybe Later**按鈕。 誘導WebDriverWait () 和element_to_be_clickable () 以及跟隨 XPATH 或 CSS 選擇器。

路徑

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='modal-footer']//button[@Class='btn btn-danger x' and text()='Maybe Later']"))).click()

CSS 選擇器:

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.modal-footer button.btn.btn-danger.x[style='danger']"))).click()

您需要導入以下庫。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

文本為“ Maybe Later ”的元素位於模態對話框中,因此要在元素上定位和click() ,您必須為element_to_be_clickable()引入WebDriverWait ,您可以使用以下任一定位器策略

  • 使用CSS_SELECTOR

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.modal-footer#eFooter button.btn.btn-danger.x[style='danger']"))).click()
  • 使用XPATH

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='modal-footer' and @id='eFooter']//button[@class='btn btn-danger x' and @style='danger']"))).click()
  • 注意:您必須添加以下導入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

暫無
暫無

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

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