selenium webdriver中的click命令不起作用

时间:2012-07-26 19:38:25

标签: selenium selenium-ide selenium-webdriver

我最近刚刚将selenium IDE代码导出到selenium web驱动程序。我发现许多在IDE中工作的命令无法工作或者selenium web驱动程序声称根本不支持。到目前为止,我一直在解决这些问题,这个问题不太理想......

目前我正在努力找出为什么点击某个按钮不能与网络驱动程序一起工作,因为它之前曾在selenium IDE中工作过。我的浏览器是FF 13,我的操作系统是Ubuntu。

代码段

WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();

我之前尝试过

driver.findElement(By.name("submit")).click();
然而,上述行也失败了。该元素已被选中,但它不会按我的意愿登录。我发现其他页面有类似的问题,但他们的问题似乎是Internet Explorer而不是Firefox。我甚至不想考虑IE将给我带来的问题。

感谢,

P.S。 关于从selenium IDE迁移到Selenium Webdriver而不会丢失我编写的所有测试的更好方法的提示也可以解决这个问题。

9 个答案:

答案 0 :(得分:74)

如果你确定该元素存在,你可以试试这个来模拟点击 - 如果.Click()不起作用

driver.findElement(By.name("submit")).sendKeys(Keys.RETURN);

driver.findElement(By.name("submit")).sendKeys(Keys.ENTER);

答案 1 :(得分:7)

需要注意的一件事是按钮是否已启用。你仍然可以点击它们,没有任何东西会掉下来,元素就在那里,但它还没有准备好被点击,所以只是没有做任何事情。

我一直在使用webdriver,它花了我一天的大部分时间来解决这个问题!

以下方法似乎可靠地工作(在我的环境中只需一个按钮!)

    private void TryClick(By selector)
    {
        var wait = WaitUpTo(TimeSpan.FromSeconds(10));
        var element = wait.Until(ExpectedConditions.ElementIsVisible((selector)));

        //really important bit!
        WaitUpTo(TimeSpan.FromSeconds(5))
            .Until(d => element.Enabled);

        element.Click();
    }

你使用类似

的东西
TryClick(By.XPath("//button[contains(.//*,'Some Text')]"));

答案 2 :(得分:2)

感谢大家的所有答案!我找到了一个解决方案,事实证明我没有提供足够的代码。

问题是毕竟是click()函数,而是与我的项目使用的cas身份验证相关。在Selenium IDE中,我的登录测试对以下位置执行了“打开”命令,

/cas/login?service=https%1F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security

那很有用。我将测试导出到Selenium webdriver,它自然保留了该位置。 Selenium Webdriver中的命令是,

driver.get(baseUrl + "/cas/login?service=https%1A%2F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security");

由于原因,我还没有理解上述失败。当我把它改成时,

driver.get(baseUrl + "MOREURL/");

点击命令突然开始工作......如果我能找出原因,我会编辑这个答案。

注意:我模糊了上面使用的网址来保护我公司的产品。

答案 3 :(得分:2)

请参阅此处https://code.google.com/p/selenium/issues/detail?id=6756 在症结中

请打开系统显示设置并确保字体大小设置为100% 它令人惊讶地工作

答案 4 :(得分:1)

任何一个版本的代码都没有错。无论是什么造成这种情况,都不是。

您是否已检查过定位器?你的元素肯定有name = submit not id = submit?

答案 5 :(得分:1)

我使用的是Firefox和某些原因,但是从过去的2个月开始它没有点击命令。 我的感觉是使用sendKeys,这个页面解决了这个问题。现在我正在使用sendKeys(Keys.Enter)

答案 6 :(得分:1)

这是a long standing issue,带有chromedriver(仍然存在于2020年)。

在Chrome中,我将缩放比例从90%更改为100%,从而解决了该问题。 ref

我发现TheLifeOfSteve的answer更可靠。

答案 7 :(得分:1)

发现

WebElement.click()单击是 ,如果页面被放大或缩小

我的页面缩小到了85%。

如果您使用( ctrl + + ctrl 重置浏览器中的页面缩放> + - )到100%,点击就会开始起作用。

发现该问题的Chrome版本为86.0.4240.111

答案 8 :(得分:0)

我正在使用EasyRepro,并且在调试代码时,它单击的是可见并启用的元素,并且未按预期进行导航。但最终我了解了问题的根本原因。

我的Chrome浏览器缩小了90%

一旦我重置缩放级别,它就会单击正确的元素并成功导航到下一页。