javascript - Selenium 单击可以工作,但无法获取下一个窗口上的元素

标签 javascript python angularjs selenium selenium-chromedriver

我正在使用 Angularjs ui-routes,我有一个链接如下。

<a ui-sref="devs" href="#/devs"> Devs</a>

我的代码如下

from selenium import webdriver

driver = webdriver.Chrome('selenium-tests/chromedriver')

driver.get("http://localhost")

menu = driver.find_element_by_link_text('Devs')

menu.click()

print (driver.current_url)

driver.close()

点击后,网址应为 http://localhost/#/dev我也可以看到浏览器中的窗口发生变化,但是当我打印时它仍然是 http://localhost ,

我已经尝试过窗口句柄,但它不起作用,任何帮助将不胜感激。

最佳答案

给它时间和 wait更改 URL。

例如,您可以等待页面标题等于“Devs”(假设是这种情况):

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# ...

menu.click()

wait = WebDriverWait(driver, 10)
wait.until(EC.title_is("Devs"))

print(driver.current_url)

或者,等待 URL 等于所需的 URL:

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)

关于javascript - Selenium 单击可以工作,但无法获取下一个窗口上的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34341004/

相关文章:

javascript - 将端点附加到从调色板拖动的 div

javascript - 在这种情况下如何使用 ng-mouseenter 删除类

css - 使用 ng-if 的动画

javascript - 获取输入元素的显示文本

javascript - 远程 : true option is not working with file field in rails 4

javascript - jquery 响应后滚动顶部保持位置

javascript - 如何将 Angular 代码放在单独的文件中

jquery - JQuery 和 Flask 没有返回任何内容?

python - 尝试用生成器表达式理解 Python 代码

python - 将变量数据传递给 Snowflake