使用selenium和python按类名单击按钮

gopyfrb3  于 2022-11-21  发布在  Python
关注(0)|答案(1)|浏览(142)

也许这是个愚蠢的问题,但我已经花了大量的时间试图弄清楚这一点。我正在用Python中的 selenium 构建一个Scraper机器人,我只是试图点击网页上的一个按钮。网页打开并调整大小...

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'
我也检查过是否有其他属性具有相同的类名,但是没有。任何帮助都将是超级感激的,谢谢!

2mbi3lxu

2mbi3lxu1#

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只需要一个类名就可以找到一个元素,但是您给了它3个类名。html属性class由一个元素列表组成,这些元素被空格分隔。

<button class="mx-auto green-btn btnHref" onclick="window.location ='/medical'" onkeypress="window.location='/medical'">
                            Medical and Hospital Costs
                        </button>

属性class具有3个类名mx-autogreen-btnbtnHref
您不能将所有3个类都与By.CLASS_NAME一起使用,但可以使用By.XPATH将它们全部使用

相关问题