Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单击链接_Python_Selenium - Fatal编程技术网

Python 单击链接

Python 单击链接,python,selenium,Python,Selenium,由于我将firefox更新为49.02,selenium更新为3.0.1,因此我以前登录bing帐户的代码不起作用 在www.bing.com中有一个登录链接,我可以通过拨打以下电话成功单击此链接: driver.get("http://www.bing.com") driver.implicitly_wait(20) driver.find_element_by_link_text('Sign in').click() 但是,升级后,我收到一条奇怪的错误消息,其中根本不包含任何消息: sel

由于我将firefox更新为49.02,selenium更新为3.0.1,因此我以前登录bing帐户的代码不起作用

www.bing.com
中有一个
登录
链接,我可以通过拨打以下电话成功单击此链接:

driver.get("http://www.bing.com")
driver.implicitly_wait(20)
driver.find_element_by_link_text('Sign in').click()
但是,升级后,我收到一条奇怪的错误消息,其中根本不包含任何消息:

selenium.common.exceptions.ElementNotVisibleException: Message:
如果我只调用
driver.find\u element\u by\u link\u text('Sign in')
,我将不会收到任何错误消息。看起来selenium可以成功定位此链接,但不知何故它无法单击此按钮

我还尝试通过it
classname
或单击图标来定位
登录
,但所有这些努力都是徒劳的

我不知道该错误是由Microsoft阻止自动登录引起的,还是由我的代码中的错误引起的。感谢你的帮助

调用
驱动程序。通过xpath('//a[span=“Sign-in”]”)查找\u元素。按
alecxe
的建议单击()
仍然无法解决问题。

要使链接可单击:


谢谢你的回答,但我收到了完全相同的错误message@user6651227好的,请检查更新。谢谢。我刚刚测试过,使用
XPATH
只是一种方法,但是使用
WebDriverWait(driver,10)。直到(EC.element\u to\u be\u clickable((By.LINK\u TEXT,“Sign in”))为止。click()
仍然会给我预期的结果。所以我猜可能是其他部分导致了这个问题。你知道吗?thanks@alecex,我知道原因,我应该像你一样从隐式方式切换到显式等待。@user6651227是的,你是对的,相应地更新了答案。谢谢。不要使用
隐式等待
,因为它没有按预期工作,请使用
显式等待
,以确保我在Selenium 2和Chrome中对其进行了测试,并且可以确认脚本正常,目标元素确实存在。@Andersson,是的,您是正确的!一旦我从
alecxe
切换到显式等待,问题就解决了。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
sign_in = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Sign in")))
sign_in.click()