如何在selenium web驱动程序中更改页面缩放级别? 我试过了:
driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);
但它不起作用。
答案 0 :(得分:25)
请注意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
's sendKeys()
与the one in Actions
不同。因此,我的解决方案中使用的Keys.NULL
必需。
答案 1 :(得分:5)
Python方法适合我,除了你必须指定缩放级别:
diffSecs = (59 + (July.getSeconds() - today.getSeconds())); // seconds
让'zoom%'=您想要的任何缩放级别。 (例如'67%')。这适用于Chromedriver,它似乎不接受send_keys命令。
答案 2 :(得分:4)
放大 |在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));
答案 3 :(得分:3)
以下两种方法可以使用 Java 更改缩放级别(一个用于Chrome,另一个用于Firefox):
使用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'");
可以使用以下内容修改缩放级别:
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);
答案 4 :(得分:2)
在开始使用Internet Explorer和Selenium Webdriver之前请考虑以下两个重要规则。
如何设置?
只需转到Internet Explorer,手动执行这两项操作。而已。不是秘密。
通过您的代码完成。
方法1:
//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...
希望这会有所帮助。如果需要进一步的信息,请告诉我。
答案 5 :(得分:0)
似乎为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();
}
答案 6 :(得分:0)
我知道这已经很晚了,但如果您不想使用动作类(或者像我一样得到任何错误),您可以使用纯JavaScript来执行此操作。
这是代码
((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");
答案 7 :(得分:0)
对于放大到30%(或您想要的任何其他值,但在我的情况下为30%),请使用
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.body.style.zoom = '30%';");
答案 8 :(得分:0)
使用Robot类为我工作:
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次。
答案 9 :(得分:0)
我正在使用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)`
答案 10 :(得分:0)
11-17-2017更新
var html = page.FindElement(By.XPath("/html"));
html.SendKeys(Keys.Control + "0" + Keys.Control);
答案 11 :(得分:0)
你可以使用&#34; Keys.chord&#34;缩小和放大的方法
缩小
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脚本代码进行缩小
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '110%'");
答案 12 :(得分:0)
您可以找到here的Firefox硒解决方案。 有效100%。
答案 13 :(得分:0)
您可以使用 Selenium 的驱动程序来执行为您放大或缩小的脚本。
火狐
await driver.executeScript('document.body.style.MozTransform = "scale(3)"');
await driver.executeScript(
'document.body.style.MozTransformOrigin = "top"'
);
这将导致放大 300% 并滚动到顶部。
Chrome
await driver.executeScript('document.body.style.zoom = "300%"');