【问题标题】:Selenium webdriver Java code using web driver for double click a record in a gridSelenium webdriver Java 代码使用 web 驱动程序双击网格中的记录
【发布时间】:2014-02-20 11:53:13
【问题描述】:

如何使用 Web 驱动程序在记录上为 doubleClick() 编写 selenium java 代码?

我在正文部分显示了一些记录。一旦我点击了一条记录,我们应该会弹出一个窗口来更新它。

请建议如何使用 Web 驱动程序编写 Selenium Java 代码。

我试过以下代码:

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//table/tbody/tr[2]/td/div/div/table/tbody/tr[10]/td[1]"))).doubleClick().build().perform();

【问题讨论】:

  • 请提供您的代码以便更好地理解问题
  • @AAB 我已经发布了我尝试过的代码
  • 啊,请给我们 html sn-p 以便我们查看您的元素在页面中的外观
  • @paul.cioroianu 我已将代码发布到我试图双击网格上的一行的问题中。使用此代码,仅选择网格中的行,但不双击。如果我双击该行,那么我将显示一个弹出窗口。你能帮帮我吗?
  • @Gokul 你可以试着点击它两次。 findElement 方法将为您返回元素,因此只需调用 element.click() 并查看是否有效。

标签: java selenium selenium-webdriver


【解决方案1】:

使用Actions 类通过WebDriver 对WebElements 执行鼠标、键盘操作。

Actions action = new Actions(driver);
WebElement element=driver.findElement(By.linkText("TEST"));

//Double click
action.doubleClick(element).perform();

//Mouse over
action.moveToElement(element).perform();

//Right Click
action.contextClick(element).perform();

【讨论】:

  • 我尝试使用您的代码使用 xpath 实现此功能,但没有成功。我已将代码发布到我试图双击网格上的一行的问题中。使用此代码,仅选择网格中的行,但不双击。如果我双击网格中的行,则应显示一个弹出窗口。你能帮帮我吗?
  • 您能在这里分享您的 html 代码以进一步帮助您吗?该链接是否在 iframe 中?
【解决方案2】:
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//table/tbody/tr[2]/td/div/div/table/tbody/tr[10]/td[1]"))).doubleClick().perform();

此代码有效!!!

【讨论】:

    【解决方案3】:

    您应该使用Actions() 类,因为它包含“双击”操作。

    Actions action = new Actions(driver);
    action.moveToElement(driver.findElement(By.linkText("Test"))).doubleClick().build().perform();
    

    【讨论】:

      【解决方案4】:

      试试这个代码:

      Actions action = new Actions(driver);
      WebElement btnElement=driver.findElement("Locator of element"));
      action.doubleClick(btnElement).build().perform();
      

      【讨论】:

        【解决方案5】:

        您可以利用 WebDriver 的 Actions 类来执行复合操作,例如 双击、拖放、悬停

        // 创建 Actions 类的实例,传递当前驱动程序实例。

        Actions builder = new Actions(driver);
        

        方式一:

        // 获取一个 Action 类对象,其中包含一个动作/一组动作

        Action action = builder.doubleClick(element);
        

        // 使用 build() 构建一组动作/单个动作,并使用 perform() 方法在浏览器上执行。

        action.build().perform();
        

        方式 2:

        // 直接在 Actions 类实例上调用 build() 和 perform() 方法

        builder.doubleClick().build().perform();
        

        【讨论】:

          【解决方案6】:

          如果没有绑定到单击的其他操作,您可以使用:

          driver.findElement(By.xpath("%youXPath%"))).click;
          driver.findElement(By.xpath("%youXPath%"))).click;
          

          实际上,它应该在大多数情况下都可以工作(除非您有一些自定义系统双击设置)

          【讨论】:

            【解决方案7】:
              WebElement element = driver.findElement(selector);
              Actions builder = new Actions(driver);
              builder.doubleClick(element).perform();
            

            【讨论】:

              【解决方案8】:

              我实施了 Ran 的解决方案(就在我的帖子上方)。我在 Eclipse 中编写 Java 并使用 Selenium WebDriver。

              您需要 2 个导入:

              import org.openqa.selenium.WebElement;
              import org.openqa.selenium.interactions.Actions;
              

              然后,我就这样实现了代码:

              WebElement element = driver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[1]/div[3]/div[8]/div[2]/div/div[2]/div/table/tbody/tr[2]"));
              Actions builder = new Actions(driver);
              builder.doubleClick(element).perform();
              

              感谢冉! 我已经为此苦苦挣扎了几个小时。两次调用单击对我来说不起作用 - 事件之间的时间太长,被测试的浏览器以双击的形式捕获。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-07-22
                • 2014-05-30
                • 1970-01-01
                • 2018-01-22
                • 2017-07-09
                • 1970-01-01
                • 1970-01-01
                • 2018-11-04
                相关资源
                最近更新 更多