[英]Clicking a button by class name using selenium with python
可能是一個愚蠢的問題,但我花了很多時間來弄清楚這個問題。 我正在 python 中使用 selenium 構建一個 scrapper bot,我只是想點擊 web 頁面上的一個按鈕。 web 頁面打開並調整大小...
def initalize_browser():
driver.get("**website name**")
driver.maximize_window()
但我無法讓它點擊特定按鈕。 這是按鈕 HTML 代碼:
<button class="mx-auto green-btn btnHref" onclick="window.location ='/medical'" onkeypress="window.location='/medical'">
Medical and Hospital Costs
</button>
這是我的代碼:
click_button=driver.find_element(by=By.CLASS_NAME, value="mx-auto green-btn btnHref")
click_button.click()
這是我為這段代碼得到的錯誤:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".mx-auto green-btn btnHref"}
我已經嘗試了很多這樣的變體,包括:
driver.find_element_by_xpath('//button[@class="mx-auto green-btn btnHref"]').click()
我在哪里收到此錯誤:
AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'
我還檢查了是否有任何其他屬性具有相同的 class 名稱,但沒有。 任何幫助將不勝感激,謝謝!
現在不推薦使用find_element_by_xpath
方法。 使用這一行:
driver.find_element(By.XPATH, '//button[@class="mx-auto green-btn btnHref"]').click()
代替:
driver.find_element_by_xpath('//button[@class="mx-auto green-btn btnHref"]').click()
並確保你在進口中有這個:
from selenium.webdriver.common.by import By
定位器click_button=driver.find_element(by=By.CLASS_NAME, value="mx-auto green-btn btnHref")
不起作用,因為By.CLASS_NAME
只需要一個 class 名稱來查找元素,但您給了它 3 class名字。 html 屬性class
由按空格分隔的元素列表組成。 所以,在這個 html 代碼中
<button class="mx-auto green-btn btnHref" onclick="window.location ='/medical'" onkeypress="window.location='/medical'">
Medical and Hospital Costs
</button>
屬性class
有 3 個 class 名稱mx-auto
, green-btn
和btnHref
您不能將所有 3 個類與By.CLASS_NAME
一起使用,但您可以使用By.XPATH
使用所有這些類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.