java - Selenium 移动鼠标不适用于低分辨率

标签 java selenium selenium-webdriver selenium-chromedriver

我想用selenium来控制chrome浏览器。 在我的工作中,我会在 map 中移动,但当我的屏幕分辨率为 1920*1080 时,selenium 会很好地工作,而当我的屏幕分辨率为 1366*768 时,它不起作用。 代码是:

ChromeDriver driver =(ChromeDriver)webDriver;
    WebElement map =driver.findElementsByClassName("ol-unselectable").get(0); // a MAP
    Actions actions =new Actions(driver);
    System.out.println(map.getSize());
    int x =map.getSize().width;
    int y =map.getSize().height;
    actions.moveToElement(map,0,0).perform();
    actions.moveByOffset(5,5).click().perform();
    actions.moveByOffset((int)(x*0.5),0).click().perform();
    actions.sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).perform();
    actions.sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).perform();
    actions.sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).sendKeys(Keys.DOWN).perform();
    actions.moveToElement(map,(int)(x*0.5),(int)(y*0.8)).click().perform();
    actions.doubleClick().perform();

代码

actions.moveToElement(map,(int)(x*0.5),(int)(y*0.8)).click().perform();" 

当我使用低分辨率时不起作用。

map 看起来像这样:enter image description here 当我的屏幕分辨率是:1920*1080时,我的代码运行结果是这样的:enter image description here
当我将屏幕分辨率更改为 1366*768 时,我的代码运行结果如下所示:enter image description here 所以,我们可以发现,action不能移动到 map 元素{0.5 width, 0.9 high}。 我该怎么办?

最佳答案

Actions 类有时需要几点:

  1. 您的元素应该出现在 DOM 上,如果不是,鼠标悬停如何工作? (克服它。根据元素的位置向上或向下滚动)
  2. 如果您要执行多个操作,请使用 build().perform();不仅是.perform()。
  3. 有时我们可以在使用 Actions 类执行任何操作之前使用 JavaScript focus 方法来关注元素,如下面的代码:

                JavascriptExecutor js = (JavascriptExecutor) ts.getDriver();
                js.executeScript("arguments[0].focus();", we);
                actions.moveToElement(map,(int)(x*0.5),(int)(y*0.8)).click().build().perform();
    

关于java - Selenium 移动鼠标不适用于低分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261648/

相关文章:

java - 从 REST Web 服务向客户端发送 .apk 文件?

java - 从 jOptionPane 中的 jSpinner 获取值

java - 在嵌入式数据库中为 Spring Batch 创建元数据表

java - TestNG - 工厂和数据提供者

python-3.x - selenium.common.exceptions.WebDriverException : Message: invalid argument: value must be a non-negative integer with ChromeDriver and Selenium

java - 如何为欧洲语言设置数字格式

selenium - 如何在testng中顺序执行所有方法

python - Selenium - 登录引发 ElementNotVisibleException

ruby - 尝试使用 Selenium Webdriver v3.70 最大化浏览器窗口时出现 Ruby "KeyError: key not found: 102"错误

java - Primefaces 的 Selenium 包装器