Selenium Webドライバーでページのズームレベルを変更する方法私は試した:
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"));
_
(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
のsendKeys()
は、 Actions
にあるもの とは異なります。このため、私のソリューションで使用されている_Keys.NULL
_はrequiredです。
あなたがズームレベルを指定する必要があることを除いて、Pythonアプローチは私のために働いています:
driver.execute_script("document.body.style.zoom='zoom %'")
'zoom%' =任意のズームレベルを設定します。 (例:'67% ')。これは、send_keysコマンドを受け入れないように見えるChromedriverで機能します。
ズームレベルをJavaで変更できる2つの方法を次に示します(1つはChrome用で、もう1つはFirefox用です):
Seleniumの v̲e̲r̲s̲i̲o̲n̲ ̲3̲.̲3̲.̲1 を使用する場合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̲.̲
3。これらのクラス:
Java.awt.Robot
Java.awt.event.KeyEvent
まず、ロボットクラスをインスタンス化します。
Robot robot = new Robot();
このコードにより、ズームレベルがdecreaseになります。
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_MINUS);
このコードにより、ズームレベルがincreaseになります。
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_EQUALS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_EQUALS);
ズームイン | ズームアウト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...
お役に立てれば。さらに情報が必要な場合はお知らせください。
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回ズームアウトします。
ズームアウトとズームインには「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 Zoom Outのスクリプトコードも使用できます
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '110%'");
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();
}
私はこれが遅いことを知っていますが、アクションクラスを使用したくない場合(または私がしたようにエラーを取得したい場合)、純粋なJavaScriptを使用してそうすることができます。
ここにコードがあります
((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");
私は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);
30%へのズームイン(または、私の場合は30%)を使用します
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.body.style.zoom = '30%';");