【问题标题】:Button click not working in selenium webdriver按钮单击在 selenium webdriver 中不起作用
【发布时间】:2018-09-04 15:04:46
【问题描述】:

按钮点击在 selenium webdriver 中不起作用。

尝试使用类名和 xpath。

提交订单

//*[@id="main-content"]/div[3]/div[5]/div[1]/div/div[2]/div/div/button[2]

【问题讨论】:

  • “不工作”是什么意思?是否点击了错误的按钮? selenium 是否声称它单击了按钮但没有任何反应? selenium 是否会抛出一个错误,说明它无法对按钮进行微调?还有什么?请edit您的问题以添加更多详细信息。
  • 按钮没有被点击也没有响应。
  • 再次,请edit您的问题包含其他信息。
  • 因此测试您的定位器:System.out.println(driver.findElements(By.xpath("//*[@id="main-content"]/div[3]/div[5]/div[1]/div/div[2]/div/div/button")).size(); 我建议的行的大写/小写可能不正确 - 凭记忆。如果它打印为零,那么它根本找不到该 xpath 的任何按钮。
  • System.out.println(driver.findElements(By.xpath("//*[@id="main-content"]/div[3]/div[5]/div[1] ]/div/div[2]/div/div/button")).size(); 我得到的响应是 2。

标签: selenium


【解决方案1】:

您可以尝试点击带有 Action Class 或 JavaScript Executor 的按钮:

动作类:

Action action=new Actions(driver);
action.moveToElement(WebElement to Click).click().perform();

JS 执行器:

((JavascriptExecutor) driver).executeScript("arguments[0].click();", driver.findElement(WebElement to Click));

【讨论】:

    【解决方案2】:

    selenium web driver element click not working in windows 10

    点击可能不起作用的原因有很多,其中一些原因:

    1. 元素并非难以处理。
    2. 其他元素将收到点击。
    3. 对于某些驱动程序实现,在某些最终情况下存在错误。
    4. 罕见 - 没有明显的原因。

    首先,尝试明显的(提交,而不是点击)

    driver.FindElement(By.XPath("//button[@type='submit']")).Submit();
    

    如果上述方法不起作用,请在此处继续。

    为了绕过所有 Click() 逻辑,请使用 JavaScript 执行原始点击。

    var element = driver.FindElement(By.XPath("//button[@type='submit']"));
    ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", element);
    

    作为扩展方法

    public static void JavaScriptClick(this IWebElement element)
    {
        // get the driver
        var driver = (IJavaScriptExecutor)((IWrapsDriver)element).WrappedDriver;
    
        // execute the click
        driver.ExecuteScript("arguments[0].click();", element);
    }
    
    // usage
    driver.FindElement(By.XPath("//button[@type='submit']")).JavaScriptClick();
    

    资源

    您可以查看 Selenium Extensions(开源)以获取更多示例 文件夹下:/src/csharp/Gravity.Core/Gravity.Core/Extensions

    https://github.com/gravity-api/gravity-core

    https://www.nuget.org/packages/Gravity.Core

    如果你使用 C#,你可以安装包并直接使用它的扩展。

    https://www.nuget.org/packages/Gravity.Core/

    Install-Package Gravity.Core
    

    【讨论】:

      【解决方案3】:

      这两种方法你可以试试

      Actions action = new Actions(driver); 
      element = driver.findElements(By.xpath("//*[@id="main-content"]/div[3]/div[5]/div[1]/div/div[2]/div/div/button"));
      action.moveToElement(element).click();
      

      或者

      driver.findElement(By.xpath("//*[@id="main-content"]/div[3]/div[5]/div[1]/div/div[2]/div/div/button")).sendkeys(Keys.Enter);
      

      【讨论】:

        【解决方案4】:

        我在 HtmlUnit 驱动程序中遇到了这个问题。解决方案是重新启用 css,因为我在驱动程序配置中禁用了它。

        假设 z-index 不是从 css 加载的,这意味着按钮不可访问,因此不可点击。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-16
          • 2017-05-23
          • 1970-01-01
          • 2017-08-18
          • 1970-01-01
          • 2014-01-12
          • 1970-01-01
          • 2020-09-04
          相关资源
          最近更新 更多