Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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
Javascript selenium click可以工作,但不会在下一个窗口中获取元素_Javascript_Python_Angularjs_Selenium_Selenium Chromedriver - Fatal编程技术网

Javascript selenium click可以工作,但不会在下一个窗口中获取元素

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

我正在使用Angularjs ui路由,我有一个链接如下

<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)