selenium webdriver中的click命令不起作用

Orw*_*erg 37 selenium selenium-ide selenium-webdriver

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

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

代码片段

WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();
Run Code Online (Sandbox Code Playgroud)

我之前尝试过

driver.findElement(By.name("submit")).click();
Run Code Online (Sandbox Code Playgroud)

但是上面的线路也失败了.该元素已被选中,但它不会按我的意愿登录.我发现其他页面有类似的问题,但他们的问题似乎是Internet Explorer而不是Firefox.我甚至不想考虑IE将给我带来的问题.

谢谢,

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

The*_*eve 77

如果您确定该元素存在,您可以尝试使用此模拟点击 - 如果.Click()不起作用

driver.findElement(By.name("submit")).sendKeys(Keys.RETURN);
Run Code Online (Sandbox Code Playgroud)

要么

driver.findElement(By.name("submit")).sendKeys(Keys.ENTER);
Run Code Online (Sandbox Code Playgroud)

  • 哇.我不知道这个.Upvote教我一些新东西:) (4认同)
  • 它不是Keys.Enter吗? (2认同)
  • @TheLifeOfSteve喜欢它!甚至对于屏幕范围之外的元素也是如此! (2认同)

Jon*_*Raa 8

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

我一直在使用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();
    }
Run Code Online (Sandbox Code Playgroud)

你喜欢用它

TryClick(By.XPath("//button[contains(.//*,'Some Text')]"));
Run Code Online (Sandbox Code Playgroud)


Moh*_*f C 7

WebElement.click()如果页面放大或缩小,发现click不起作用。

我把页面缩小到 85%。

ctrl如果您使用( ++ctrl+ )将浏览器中的页面缩放重置-为 100%,则点击将开始工作。

Chrome 版本 86.0.4240.111 发现问题