27

Selenium WebDriverでページのズームレベルを変更するには? 私は試した:

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

しかし、うまくいきません。

4

14 に答える 14

31

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()(C#バインディングにはメソッドがないことに気付いたので)

または、次のような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()のはWebElementsendKeys()とは異なりますActions。このためKeys.NULL、私のソリューションで使用される はrequired です

于 2013-02-22T13:25:41.777 に答える
7

ズームレベルを指定する必要があることを除いて、Pythonのアプローチは私にとってはうまくいきます:

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

'zoom%' = 任意のズーム レベルを設定します。(例: '67%')。これは、send_keys コマンドを受け入れないように見える Chromedriver で機能します。

于 2015-07-17T18:57:11.957 に答える
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));
于 2013-09-05T11:29:08.363 に答える
2

最も堅牢なアプローチ

Internet Explorer と Selenium Webdriver を使い始める前に、次の 2 つの重要なルールを考慮してください。

  1. ズーム レベル: デフォルト (100%) に設定する必要があります。
  2. セキュリティ ゾーンの設定: すべて同じにする必要があります。セキュリティ設定は、組織の権限に従って設定する必要があります。

これを設定するには?

単純に 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 を開いて取得するように依頼したためです。ただし、Selenium は、ブラウザーのズームが 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...

お役に立てれば。さらに情報が必要な場合はお知らせください。

于 2016-11-25T09:45:58.080 に答える
0

これが遅れていることは承知していますが、アクション クラスを使用したくない場合 (または、私が行ったようにエラーを取得したくない場合) は、純粋な JavaScript を使用して実行できます。

ここにコードがあります

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

于 2016-07-15T02:43:39.793 に答える
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();
        }
于 2016-02-18T11:49:41.993 に答える
0

ここで、Firefox での Selenium のソリューションを見つけることができます。100% 動作します。

于 2020-11-17T01:49:03.443 に答える