selenium click工作但没有得到下一个窗口的元素

时间:2015-12-17 17:44:48

标签: 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

我已尝试过窗口句柄,但它不起作用,任何帮助都会被贬低。

2 个答案:

答案 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标记。