【问题标题】:Selenium java webdriver 3: moveToElement not workingSelenium java webdriver 3:moveToElement不工作
【发布时间】:2019-05-02 05:37:42
【问题描述】:

Selenium java webdriver 3:moveToElement 不工作。

WebElement element = ...
Actions actions = new Actions(driver);
actions.moveToElement(element).build().perform();

试过了,加上click()

WebElement element = ...
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();

不工作。鼠标没有移动。

【问题讨论】:

  • 请提供您的html。
  • 提供使用的html代码和定位器。
  • 另外,如果您在此过程中遇到任何错误/异常,也请发布。
  • 可能是您的页面上有加载程序掩码。尝试 asn 显式等待,例如:WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.visibilityOf(element)): 至少这将验证元素是否存在,如果不存在则抛出错误。否则我在您的代码中看不到任何错误。
  • 我刚刚注意到这是一个非常古老的问题。我不知道我是怎么得到它的。

标签: selenium google-chrome selenium-webdriver


【解决方案1】:

WebElement abcd = ..........

Actions actions = new Actions(driver);

actions.moveToElement(abcd).perform();

上面的代码可以工作,但请检查 chrome.exe 版本和您在机器上使用的 chrome 版本。两者应该相互兼容。检查与以下链接的兼容性。

https://sites.google.com/a/chromium.org/chromedriver/

【讨论】:

    【解决方案2】:

    跳过build() 部分,perform() 无论如何都在下面。

    【讨论】:

      【解决方案3】:
      Actions actions = new Actions(driver);
      WebElement element = driver.findElement(By.linkText("host"));
      actions.moveToElement(element).build().perform();
      

      这会奏效。首先检查您的“查找元素”方法是否写入或错误。请也发布此步骤。否则你的代码是正确的。

      【讨论】:

        【解决方案4】:

        尝试通过 xpath 而不是链接文本来查找元素。它对我有用。

        WebElement element = driver.findElement(By.xpath("..."));
        Actions actions = new Actions(driver);
        actions.moveToElement(element).build().perform();
        

        【讨论】:

          【解决方案5】:

          试试下面的代码

          public static void mouse_movement(WebDriver driver, String xpathExpression) {
              Actions act = new Actions(driver);
              WebElement target = driver.findElement(By.xpath(xpathExpression));
              act.moveToElement(target).build().perform();
          }
          

          【讨论】:

            【解决方案6】:

            如果你需要点击元素,你可以试试javascript:

            JavascriptExecutor executor = (JavascriptExecutor)driver;
                    executor.executeScript("arguments[0].click();", driver.findElement(By.xpath(xPath)));
            

            【讨论】:

              【解决方案7】:

              我已经解决了这个问题:

              const element = await driver.findElement(...)
              await driver.executeScript("arguments[0].scrollIntoView(true);", element)
              await driver.sleep(500);
              

              【讨论】:

                猜你喜欢
                • 2014-10-08
                • 1970-01-01
                • 1970-01-01
                • 2018-10-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多