Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 硒移动鼠标don';我不能以低分辨率工作_Java_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Java 硒移动鼠标don';我不能以低分辨率工作

Java 硒移动鼠标don';我不能以低分辨率工作,java,selenium,selenium-webdriver,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,我想使用selenium来控制chrome浏览器。 在我的工作中,我会在地图中移动,但当我的屏幕分辨率为1920*1080时,selenium会工作得很好,而当我的屏幕分辨率为1366*768时,它就不工作了。 守则是: ChromeDriver driver =(ChromeDriver)webDriver; WebElement map =driver.findElementsByClassName("ol-unselectable").get(0); // a MAP Ac

我想使用selenium来控制chrome浏览器。 在我的工作中,我会在地图中移动,但当我的屏幕分辨率为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();" 
当我使用低分辨率时不起作用

地图如下所示: 当我的屏幕分辨率为:1920*1080时,我的代码运行结果如下所示:
当我将屏幕分辨率更改为1366*768时,我的代码运行结果如下所示: 我们可以发现,action不能移动到map元素{0.5宽,0.9高}。 我该怎么做?

试试这个:

actions builder = new Actions(driver);   
builder.moveToElement(map,(int)(x*0.5),(int)(y*0.8)).click().build().perform();
也许这会解决你的问题 对不起,我不能在你的问题下发表评论…

试试这个

actions builder = new Actions(driver);   
moveToElement(map,(int)(x*0.5),(int)(y*0.8))。单击().build().perform()

请试一试。如果我没有错,它会解决问题


操作类有时需要几点:

  • 您的元素应该出现在DOM上,如果不是,鼠标悬停将如何工作?(要克服此问题,请根据元素的位置向上或向下滚动)
  • 如果要执行多个操作,请使用build().perform();不仅如此。执行()
  • 有时,我们可以在使用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();
    

  • 它确实可以工作,地图总是显示在DOM上,当我的屏幕分辨率为1920*1080时,我的代码也可以工作。当我将屏幕分辨率更改为1366*768时,我的代码不起作用。您的代码无法解决此问题。当分辨率为1920*1080时,屏幕上也会显示地图?是的,地图始终在屏幕上,无论分辨率有多大!地图分区的高度始终为735pX。请检查定位器是否相同?定位器是否正常