Python Selenium Webdriver click()函数不支持';行不通

Python Selenium Webdriver click()函数不支持';行不通,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,我正在为一个使用Python和Selenium的网站进行测试。 今天我注意到这个脚本遗漏了webdriver.click()函数——它没有给出任何错误,但什么也没有发生。 代码已经很长时间没有更改了 我做了一个简单的测试,看看我的代码中是否有问题,或者Selenium中是否有问题。我使用了旧教程中的一个: url = "https://www.geeksforgeeks.org/" path_to_chromedriver_user_data = path.abspath(p

我正在为一个使用Python和Selenium的网站进行测试。 今天我注意到这个脚本遗漏了webdriver.click()函数——它没有给出任何错误,但什么也没有发生。 代码已经很长时间没有更改了

我做了一个简单的测试,看看我的代码中是否有问题,或者Selenium中是否有问题。我使用了旧教程中的一个:

url = "https://www.geeksforgeeks.org/"
path_to_chromedriver_user_data = path.abspath(path.join(__file__, "../../chromedriver/chrome user data"))
path_to_chromedriver = path.abspath(path.join(__file__, "../../chromedriver"))

options = webdriver.ChromeOptions()
options.add_argument('user-data-dir=' + path_to_chromedriver_user_data)
options.add_argument('--ignore-certificate-errors')
# options.add_argument('--incognito')
# options.add_argument('--headless')
# options.add_argument('disable-blink-features=AutomationControlled')
options.add_argument('--no-sandbox')
options.add_argument('--disable-infobars')
options.add_argument('--disable-gpu')
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(path_to_chromedriver + '/chromedriver', options=options)
driver.set_page_load_timeout(30)

driver.get(url)
time.sleep(1)
button = driver.find_element_by_xpath("/html/body/div[2]/div[1]/ul[1]/li[3]/a")
print(button.text)
button.click()
time.sleep(10)
driver.close()
它正确地查找元素并输出:

Courses
但点击本身并没有发生。什么可能导致问题? 我已经下载了Chrome驱动程序的最新版本。硒模块也是最新的

如果在终端中启动脚本,它还会从chromedriver中发出以下错误:

[13124:10848:1030/184929.987:ERROR:ssl_client_socket_impl.cc(960)] handshake failed; returned -1, SSL error code 1, net_error -113
[13124:10848:1030/184935.403:ERROR:ssl_client_socket_impl.cc(960)] handshake failed; returned -1, SSL error code 1, net_error -113
但我想我以前看到过这些错误,一切都很好

请帮忙

更新: 我还更新了谷歌浏览器:什么都没有。 然后我降级了:没什么:(

更新2: 我已经从chrome中清空了用户数据文件夹(我有一个用于selenium chrome用户数据的自定义文件夹),并清除了所有本地文件。 然后成功了! 奇怪的问题。还是不知道是什么引起的

我想我找到了一个解决方案:
看起来这个错误是由Chrome zoom level引起的。在我的zoom level为33%之前,但在删除Cookie和用户数据后,它被重置为100%。如果它低于一定的值,我会使用它,webdriver。单击()停止工作。

我猜您单击得太早了。您是否尝试过在该元素上等待clickable,然后单击它?此外,定位器非常脆弱,如果进行UI更改,最终会单击错误的元素。更好的定位器将使脚本更具弹性,也使您的代码更易于阅读。谢谢这是非常重要的一点!在正确的应用程序中,当然应该使用
button=WebDriverWait(driver,5)。直到(EC.element可点击((By.XPATH,f”//a[@class=…))
。此外,您100%正确地认为不应该使用这种类型的路径。但这只是一个简单的测试示例。因此,请不要对它太苛刻。问题不是找不到元素,而是由于某种原因没有单击。请注意,该元素的位置绝对正确-我甚至添加了一个
print
再次检查。解决方法:我已从chrome中清空用户数据文件夹(我有一个用于selenium chrome用户数据的自定义文件夹),并清除了所有本地文件。然后一切正常!