我在Ubuntu可靠的本地虚拟机上拥有完全相同版本的selenium(2.53.6)和firefox(43.0),并且在travis上拥有可靠的图像。
HTML代码很简单
<div>
<a href="/"><i class="fa fa-close fa-2x" aria-hidden="true"></i><br>Close</a><br>
</div>
测试代码也是微不足道的
def test_start_stop_container(self):
driver = self.driver
driver.get(self.base_url + "/hub/login")
driver.find_element_by_id("username_input").clear()
driver.find_element_by_id("username_input").send_keys("test")
driver.find_element_by_id("password_input").clear()
driver.find_element_by_id("password_input").send_keys("test")
driver.find_element_by_id("login_submit").click()
driver.find_element_by_name("action").click()
self.wait_for(lambda: "noVNC" == driver.title)
driver.find_element_by_xpath("//i").click() # << this here.
self.wait_for(lambda: "noVNC" != driver.title)
driver.find_element_by_name("action").click()
driver.find_element_by_xpath("//i").click()
driver.find_element_by_xpath("(//button[@name='action'])[2]").click()
self.wait_for(
lambda: "Start" == driver.find_element_by_name("action").text)
driver.find_element_by_id("logout").click()
在这两种情况下,我都使用Xvfb,但仅在Travis上,点击不起作用。没有异常发生。看起来似乎没有执行操作。我使用一些ffmpeg魔法在Xvfb上录制了会话,我看到的是链接以蓝色突出显示(这是悬停颜色)但是没有点击链接。
This video shows the exact operation (starts around 20 sec mark)
有没有人知道问题可能是什么,或者我可以做些什么来调试它?
答案 0 :(得分:1)
实际上click()
的{{1}}方法由于元素的某些设计问题或其他问题而无法按预期工作。所以在这种情况下,这里是selenium提供的替代解决方案,用于执行WebElement
段以对元素执行更多事件。
因此可以使用JavaScript
代替点击此处点击: -
execute_script()
答案 1 :(得分:0)
尝试使用此xpath来识别href - "//a[contains(text(),'Close')]"