在selenium webdriver中测试浏览器页面的缩放级别

时间:2017-03-31 13:25:32

标签: selenium selenium-webdriver

要在浏览器上放大网页,我搜索了解决方案并使用了以下方法,但我收到错误或没有缩放效果。有人可以请帮我确定错误在哪里或代码有什么问题。我使用的浏览器是Chrome。

第一种方法:

element = driver.findElement(By.tagName("html"));
element.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
  

收到错误:线程“main”中的异常   org.openqa.selenium.WebDriverException:未知错误:无法关注   元件

为了解决上述错误我试过了:

element = driver.findElement(By.tagname("html"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.click();
actions.sendKeys(Keys.CONTROL, Keys.ADD);
actions.build().perform();
  

收到错误:未知错误:无法执行'getComputedStyle'   'Window':参数1不是'Element'类型。

此外,我尝试将元素html替换为body,但缩放不起作用

第三种方式:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.body.style.zoom='80%'");

3 个答案:

答案 0 :(得分:1)

我已经在chrome和IE浏览器中测试过第三种方式,它运行正常。

    driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("http://store.demoqa.com/");
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.body.style.zoom='200%'");

在Firefox中未实现缩放。

“替换”是从CSS3:https://developer.mozilla.org/En/transform

转换而来的

以下是firefox浏览器的代码:

    WebDriver driver;    
    driver = new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("http://store.demoqa.com/");
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.body.style.MozTransform = 'scale(2)';");

参考:object.Style.Zoom property not working in Firefox

如果您有任何疑问,请告诉我

答案 1 :(得分:1)

使用v̲e̲r̲s̲i̲o̲n̲ ̲3̲.̲3̲.̲1的Selenium Java客户端驱动程序和C̲h̲r̲o̲m̲e̲D̲r̲i̲v̲e̲r̲ ̲2̲.̲2̲8时,以下工作(单引号中的数字表示要使用的缩放级别; 1 = 100%,1.5 = 150%,等):

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '1.5'");

<小时/> 此外,可以使用以下内容修改Firefox中的缩放级别:
1.上述Java客户端驱动程序
2. G̲e̲c̲k̲o̲D̲r̲i̲v̲e̲r̲ ̲v̲0̲.̲1̲5̲.̲0
这些课程:
java.awt.Robot中
java.awt.event.KeyEvent中

首先,实例化Robot类:

Robot robot = new Robot();

此代码会使缩放级别减少

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_MINUS);

此代码会使缩放级别增加

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_EQUALS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_EQUALS);

答案 2 :(得分:0)

以下是您的需求:

new Actions(driver)
     .sendKeys(Keys.Control).sendKeys(Keys.Add)
     .perform();

在列表中,这适用于C#。