Selenium在本地工作,但无法点击travis上的链接

时间:2016-08-25 19:11:16

标签: selenium

我在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)

有没有人知道问题可能是什么,或者我可以做些什么来调试它?

2 个答案:

答案 0 :(得分:1)

实际上click()的{​​{1}}方法由于元素的某些设计问题或其他问题而无法按预期工作。所以在这种情况下,这里是selenium提供的替代解决方案,用于执行WebElement段以对元素执行更多事件。

因此可以使用JavaScript代替点击此处点击: -

execute_script()

答案 1 :(得分:0)

尝试使用此xpath来识别href - "//a[contains(text(),'Close')]"