要在浏览器上放大网页,我搜索了解决方案并使用了以下方法,但我收到错误或没有缩放效果。有人可以请帮我确定错误在哪里或代码有什么问题。我使用的浏览器是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%'");
答案 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中的缩放级别:
首先,实例化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#。