如何在 Selenium WebDriver 中更改页面缩放级别?我试过:
driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);
但它不起作用。
如何在 Selenium WebDriver 中更改页面缩放级别?我试过:
driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);
但它不起作用。
请注意,Selenium 假定缩放级别为 100%!例如,当缩放级别不同时,IE 将拒绝启动(抛出异常),因为定位的元素取决于此,如果您更改缩放级别,它将在错误的位置单击错误的元素。
您可以使用以下Keys.chord()
方法:
WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
谨慎使用,完成后将缩放重置为 100%:
html.sendKeys(Keys.chord(Keys.CONTROL, "0"));
(因为我意识到 C# 绑定没有该Keys.chord()
方法)
或者,您可以像这样使用Advanced User Interactions API(同样是 Java 代码,但它在 C# 中的工作方式应该相同):
WebElement html = driver.findElement(By.tagName("html"));
new Actions(driver)
.sendKeys(html, Keys.CONTROL, Keys.ADD, Keys.NULL)
.perform();
同样,不要忘记之后重置缩放:
new Actions(driver)
.sendKeys(html, Keys.CONTROL, "0", Keys.NULL)
.perform();
请注意,天真的方法
html.sendKeys(Keys.CONTROL, Keys.ADD);
不起作用,因为在此方法Ctrl中释放了密钥。sendKeys()
的WebElement
与中sendKeys()
的Actions
不同。因此,Keys.NULL
我的解决方案中使用的 是必需的。
以下是使用Java更改缩放级别的两种方法(一种用于 Chrome,另一种用于 Firefox):
当使用Selenium Java 客户端驱动程序的v̲e̲r̲s̲i̲o̲n̲ ̲3̲.̲3̲.̲1和C̲h̲r̲o̲m̲e̲D̲r̲i̲v̲e̲r̲ ̲2̲.̲2̲8时,以下工作(其中单引号中的数字表示要使用的缩放级别;1 = 10.%0%,等等。11) :
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '1.5'");
缩放级别可以通过以下方式修改:
1. 上述 Java 客户端驱动程序
2. G̲e̲c̲k̲o̲D̲r̲i̲v̲e̲r̲ ̲v̲0̲.̲1̲5̲.̲0
3. 这些类:
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);
Python 方法对我有用,但您必须指定缩放级别:
driver.execute_script("document.body.style.zoom='zoom %'")
有 'zoom%' = 你想要的任何缩放级别。(例如“67%”)。这适用于 Chromedriver,它似乎不接受 send_keys 命令。
放大| 缩小功能开启Windows
放大
WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
缩小
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
放大| 缩小功能开启MAC
放大
WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.COMMAND, Keys.ADD));
缩小
html.sendKeys(Keys.chord(Keys.COMMAND, Keys.SUBTRACT));
在开始使用 Internet Explorer 和 Selenium Webdriver 之前请考虑这两个重要规则。
这个怎么设置?
只需转到 Internet Explorer,手动完成这两项工作。就是这样。没有秘密。
通过您的代码执行此操作。
方法一:
//Move the following line into code format
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");
WebDriver driver= new InternetExplorerDriver(capabilities);
driver.get(baseURl);
//Identify your elements and go ahead testing...
这绝对不会显示任何错误,并且浏览器将打开并导航到 URL。
但是这不会识别任何元素,因此您无法继续。
为什么?因为我们只是简单地抑制了错误并要求 IE 打开并获取该 URL。然而,只有当浏览器缩放为 100% 时,Selenium 才会识别元素。默认。所以最终的代码是
方法2 稳健且全面的证明方式:
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");
WebDriver driver= new InternetExplorerDriver(capabilities);
driver.get(baseURl);
driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0"));
//This is to set the zoom to default value
//Identify your elements and go ahead testing...
希望这可以帮助。如果需要更多信息,请告诉我。
对于放大到 30%(或您希望的任何其他值,但在我的情况下为 30%),请使用
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.body.style.zoom = '30%';");
我正在使用 Python 3.5。我遇到了和你一样的问题。我认为您必须使用 Chrome 作为浏览器。
我使用 PhantomJs 最终解决了这个问题:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get('http://www.*.com')
print(browser.title)
c=browser.find_element_by_tag_name("body")
c.send_keys(Keys.LEFT_CONTROL+Keys.Add)`
您可以使用“Keys.chord”方法进行缩小和放大
缩小
WebElement zoomPage = driver.findElement(By.tagName("html"));
zoomPage.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD))
当您完成工作并想将浏览器重置为 100% 时,请使用以下代码如果您想单击任何元素,因此在单击事件之前,您可以在单击后将浏览器窗口重置为 100%。
zoomPage.sendKeys(Keys.chord(Keys.CONTROL, "0"));
您也可以使用 Java 脚本代码进行 Zoom OUT
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '110%'");
似乎为 C# 提出的方法不再适用。
在 WebDriver 2.5 版中适用于我的 C# 方法是:
public void ZoomIn()
{
new Actions(Driver)
.SendKeys(Keys.Control).SendKeys(Keys.Add)
.Perform();
}
public void ZoomOut()
{
new Actions(Driver)
.SendKeys(Keys.Control).SendKeys(Keys.Subtract)
.Perform();
}
我知道这已经很晚了,但是如果您不想使用操作类(或像我一样遇到任何错误),您可以使用纯 JavaScript 来执行此操作。
这是代码
((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");
使用机器人类对我有用:
for(int i=0; i<3; i++){
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_MINUS);
}
这将缩小 3 倍。
2017 年 11 月 17 日更新
var html = page.FindElement(By.XPath("/html"));
html.SendKeys(Keys.Control + "0" + Keys.Control);
你可以在这里找到Selenium with Firefox 的解决方案。工作 100%。
您可以使用 Selenium 的驱动程序来执行将为您放大或缩小的脚本。
火狐
await driver.executeScript('document.body.style.MozTransform = "scale(3)"');
await driver.executeScript(
'document.body.style.MozTransformOrigin = "top"'
);
这将导致放大 300% 并滚动到顶部。
铬合金
await driver.executeScript('document.body.style.zoom = "300%"');