如何更改网页硒司机页面缩放级别? 我试过了:
driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);
但是,这是行不通的。
如何更改网页硒司机页面缩放级别? 我试过了:
driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);
但是,这是行不通的。
要注意的是硒假定缩放级别为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()
方法)
或者,你可以使用高级用户交互的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
在我的解决方案使用的是必需的 。
Python的方式为我工作,除了你必须指定缩放级别:
driver.execute_script("document.body.style.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));
这里有两种方式缩放级别可以使用Java(一个是Chrome和另一个用于Firefox)的改变:
当使用3.3.1版的硒的Java客户端驱动程序和ChromeDriver 2.28 ,以下工作(其中在单引号中的数字表示缩放级别使用; 1 = 100%,1.5 = 150%等) :
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '1.5'");
缩放级别可以用下面的修改:
1.上述Java客户端驱动程序
2. GeckoDriver v0.15.0
3.这些类:
java.awt.Robot中
java.awt.event.KeyEvent中
首先,实例化机器人类:
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);
在开始使用Internet Explorer和硒的webdriver考虑这两个重要的规则。
如何设置呢?
只需进入IE浏览器,手动一举两得的东西。 而已。 没有秘密。
做到这一点通过您的代码。
方法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...
这将definetly不会显示任何错误,浏览器将打开,也将导航到URL。
但这不会识别任何元素,因此你无法继续。
为什么? 因为我们有simly抑制错误,并要求IE打开,并得到该URL。 然而硒将确定元素只有在浏览器缩放为100%,即。 默认。 所以最终代码会
方法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...
希望这可以帮助。 不要让我知道,如果需要进一步的信息。
似乎提出了C#这种做法行不通了。
对于C#的办法,在webdriver的版本对我的作品2.5是:
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();
}
我知道这是迟到了,但在情况下,如果你不希望使用Action类(或得到任何错误,像我一样),你可以使用纯JavaScript这样做。
下面是代码
((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");
对于放大至30%(或任何你想要的其他价值,但在我的情况下,30%)使用
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.body.style.zoom = '30%';");
使用机器人类为我工作:
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倍。
我使用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)`
2017年11月17日更新
var html = page.FindElement(By.XPath("/html"));
html.SendKeys(Keys.Control + "0" + Keys.Control);
您可以使用缩小和放大“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脚本代码以及用于放大OUT
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '110%'");