我正在使用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,
我已尝试过窗口句柄,但它不起作用,任何帮助都会被贬低。
答案 0 :(得分:1)
为要更改的网址留出时间并wait。
例如,您可以等待页面标题等于&#34; Devs&#34; (假设是这种情况):
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)
答案 1 :(得分:0)
您不应该同时使用//Bars on the left
div.leftbar, div.post, div.static, div.value{height:24px; float:left;position:absolute;}
div.post1, div.post2, div.post3 {height:24px; float:left;}
div.post4 {height:24px; float:left;}
//Bar on the right
div.rightbar {height:24px; float:right; z-index:-1;}
.leftbar{background: #4c8fe1;}
.post1{
background: #1D93C3;
}
.post2{
background: #2EB0E5;
}
.post3{
background: #66C4EA;
}
.post4{
background: #A2DAF1;
//html:
<div class="leftbar" style="width:31.25%"></div>
<div class="post1" style="width:5%;"></div>
<div class="post2" style="width:5%;"></div>
<div class="post3" style="width:5%;"></div>
<div class="post4" style="width:5%;"></div>
<div class="rightbar" style="width:53%;"></div>
和ui-sref
,否则您可能遇到一些奇怪的问题,例如您现在遇到的问题。由于您使用的是ui-router,因此除非您要链接到外部网站或转到与角度应用程序不同的页面,否则不需要使用href
标记。