Selenium Java Webdriver 3:moveToElement不起作用

时间:2019-05-02 05:37:42

标签: selenium google-chrome selenium-webdriver

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();

不起作用。鼠标没有移动。

7 个答案:

答案 0 :(得分:0)

跳过build()部分,perform()始终在下面进行。

答案 1 :(得分:0)

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

Actions actions = new Actions(driver);

actions.moveToElement(abcd).perform();

上面的代码可以使用,但是请在您的计算机上检查chrome.exe版本和正在使用的chrome版本。两者应该彼此兼容。检查以下链接的兼容性。

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

答案 2 :(得分:0)

Movie movie = Json.fromJson(jsonNode, Movie.class);

if(movies.stream().noneMatch(m -> m.getMovieName().equals(movie.getName()))) {
    movies.add(movie);
    return ok(Json.toJson(movie));
} else {
    // Movie name already exists... Throw exception here
    return badRequest("Movie already exists");
}

这将起作用。首先检查您的“查找元素”方法是正确还是错误。请同时发布此步骤。否则您的代码是正确的。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

尝试以下代码

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();
}

答案 5 :(得分:0)

如果您需要单击该元素,则可以尝试使用javascript:

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

答案 6 :(得分:0)

我已经解决了这个问题:

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