Javascript selenium click可以工作,但不会在下一个窗口中获取元素
我正在使用Angularjs ui路由,我有一个链接如下Javascript selenium click可以工作,但不会在下一个窗口中获取元素,javascript,python,angularjs,selenium,selenium-chromedriver,Javascript,Python,Angularjs,Selenium,Selenium Chromedriver,我正在使用Angularjs ui路由,我有一个链接如下 <a ui-sref="devs" href="#/devs"> Devs</a> 单击后,url应该是,我可以在浏览器中看到窗口也在更改,但是当我打印时,它仍然是 我已经尝试过窗口句柄,但它不起作用,任何帮助都将受到感谢。给它时间,让URL更改 例如,您可以等待页面标题等于“Devs”(假设是这种情况): 或者,等待URL与所需URL相等: wait = WebDriverWait(driver, 10) wa
<a ui-sref="devs" href="#/devs"> Devs</a>
单击后,url应该是,我可以在浏览器中看到窗口也在更改,但是当我打印时,它仍然是
我已经尝试过窗口句柄,但它不起作用,任何帮助都将受到感谢。给它时间,让URL更改
例如,您可以等待页面标题等于“Devs”(假设是这种情况):
或者,等待URL与所需URL相等:
wait = WebDriverWait(driver, 10)
wait.until(lambda driver: driver.current_url == "http://localhost/#/dev")
或者,您可以尝试增加页面加载时间:
要调试问题,请打印等待期间检查的当前URL:
def wait_for_url(driver):
print(driver.current_url)
return driver.current_url == "http://localhost/#/dev"
wait = WebDriverWait(driver, 10)
wait.until(wait_for_url)
您不应该同时使用
ui sref
和href
,否则您可能会遇到一些奇怪的问题,比如您现在遇到的问题。由于您使用的是ui路由器,因此您不需要使用href
标记,除非您链接到外部站点或转到与angular应用程序不同的页面。我尝试了超时60秒,但它给了我一个超时异常wait=WebDriverWait(driver,60)wait.until(lambda driver:driver.current_url=>)@LeoG我认为问题出在您正在检查的url中-它应该是一个完整的url,而不是scaffold/#/dev
。我使用了完整的url,注释删除了httppart@LeoG更新了答案并包括了如何调试问题。请尝试它。thx,但它会继续打印,这非常奇怪,因为单击会移动到下一个pageI haven not这是我检查元素时显示的内容
wait = WebDriverWait(driver, 10)
wait.until(lambda driver: driver.current_url == "http://localhost/#/dev")
driver.set_page_load_timeout(20)
def wait_for_url(driver):
print(driver.current_url)
return driver.current_url == "http://localhost/#/dev"
wait = WebDriverWait(driver, 10)
wait.until(wait_for_url)