我正在使用 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/