簡體   English   中英

使用 selenium 和 python 按 class 名稱單擊按鈕

[英]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-autogreen-btnbtnHref
您不能將所有 3 個類與By.CLASS_NAME一起使用,但您可以使用By.XPATH使用所有這些類

暫無
暫無

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

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