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"));
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()
のはWebElement
のsendKeys()
とは異なりますActions
。このためKeys.NULL
、私のソリューションで使用される はrequired です。
ズームレベルを指定する必要があることを除いて、Pythonのアプローチは私にとってはうまくいきます:
driver.execute_script("document.body.style.zoom='zoom %'")
'zoom%' = 任意のズーム レベルを設定します。(例: '67%')。これは、send_keys コマンドを受け入れないように見える Chromedriver で機能します。
ズームイン| ズームアウト機能オン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 を使い始める前に、次の 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...
お役に立てれば。さらに情報が必要な場合はお知らせください。
これが遅れていることは承知していますが、アクション クラスを使用したくない場合 (または、私が行ったようにエラーを取得したくない場合) は、純粋な JavaScript を使用して実行できます。
ここにコードがあります
((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");
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();
}
ここで、Firefox での Selenium のソリューションを見つけることができます。100% 動作します。