硒的webdriver放大/缩小页面内容(Selenium webdriver zoom in/ou

2019-07-20 08:41发布

如何更改网页硒司机页面缩放级别? 我试过了:

driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);

但是,这是行不通的。

Answer 1:

要注意的是硒假定缩放级别为100%! 例如,IE将拒绝启动(抛出异常)时,缩放级别是不同的,因为元素的定位取决于此,如果你改变了缩放级别,那就点击错误的元素,在错误的地方。


Java的

您可以使用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#

(因为我意识到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()方法。 所述WebElementsendKeys()是从不同的一个中Actions 。 正因为如此,在Keys.NULL在我的解决方案使用的是必需的



Answer 2:

Python的方式为我工作,除了你必须指定缩放级别:

driver.execute_script("document.body.style.zoom='zoom %'")

有“缩放%=你想要的任何缩放级别。 (例如'67%')。 这适用于Chromedriver,这似乎并没有接受send_keys命令。



Answer 3:

放大 | 缩小特征上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));


Answer 4:

这里有两种方式缩放级别可以使用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);


Answer 5:

最可靠的方法

在开始使用Internet Explorer和硒的webdriver考虑这两个重要的规则。

  1. 缩放级别:应设置为默认值(100%)和
  2. 安全区域设置:应该是相同的所有。 安全设置应该根据自己的组织权限进行设置。

如何设置呢?

只需进入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...

希望这可以帮助。 不要让我知道,如果需要进一步的信息。



Answer 6:

似乎提出了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();
        }


Answer 7:

我知道这是迟到了,但在情况下,如果你不希望使用Action类(或得到任何错误,像我一样),你可以使用纯JavaScript这样做。

下面是代码

((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");



Answer 8:

对于放大至30%(或任何你想要的其他价值,但在我的情况下,30%)使用

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.body.style.zoom = '30%';");


Answer 9:

使用机器人类为我工作:

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倍。



Answer 10:

我使用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)`


Answer 11:

2017年11月17日更新

var html = page.FindElement(By.XPath("/html"));
html.SendKeys(Keys.Control + "0" + Keys.Control);


Answer 12:

您可以使用缩小和放大“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%'");


文章来源: Selenium webdriver zoom in/out page content
标签: selenium zoom