webentwicklung-frage-antwort-db.com.de

InternetExplorerDriver Zoom Level Error

Ich versuche, Tests gegen IE8 auszuführen, aber ich habe ein seltsames Problem festgestellt:

  1. Beim Erstellen der Webtreiber-Instanz (Treiber = Selenium :: WebDriver.for: ie) wird IE gestartet und eine Ausnahme wird von WebDriver ausgelöst:

    "Unerwarteter Fehler beim Starten von Internet Explorer. Die Zoomstufe des Browsers wurde auf 0% festgelegt."

  2. IE scheint einen Fehler beim Herstellen der Verbindung zum IE - Treiberserver zu zeigen, aber wenn ich den Browser manuell aktualisiere, wird eine Verbindung hergestellt.

    Ich habe online nachgesehen und nur zwei andere Personen haben dies berichtet. Eine mögliche Lösung bestand darin, sicherzustellen, dass alle Zonen die gleichen Einstellungen für den "geschützten Modus" haben.

    Meine Umgebung ist Windows 7 und IE8 mit IE Driver Server v2.25.3 und ich verwende die Ruby-Bindungen.

Irgendwelche Ideen?

18
Mark Micallef

Laut der Antwort von Jim Evans (einem der Selenium-Entwickler) in diesem Thread in der WebDriver User Group sollte der folgende Code Ihr Problem beheben.

DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability("ignoreZoomSetting", true);
driver = new InternetExplorerDriver(caps);
20
JacekM

Da die Frage nicht mit einer bestimmten Sprache markiert ist und JacekMs Antwort in C # für mich nicht funktionierte (angesichts des Gehäuses ist es wohl Java). Ich werde die entsprechende Lösung für C # hier einfügen:

var service = InternetExplorerDriverService.CreateDefaultService(@"Path\To\Driver");
// properties on the service can be used to e.g. hide the command Prompt

var options = new InternetExplorerOptions
{
    IgnoreZoomLevel = true
};
var ie = new InternetExplorerDriver(service, options);
13
Tomas Aschan

 adjust browser zoom to 100% Um es schnell zu beheben, stellen Sie den Zoom des Browsers auf 100% ein.

10

Der robusteste Ansatz

Bevor Sie mit Internet Explorer und Selenium Webdriver beginnen, beachten Sie diese beiden wichtigen Regeln.

  1. Die Zoomstufe: Sollte auf Standard (100%) und gesetzt sein
  2. Die Sicherheitszoneneinstellungen: Sollte für alle gleich sein. Die Sicherheitseinstellungen sollten entsprechend Ihren Organisationsberechtigungen festgelegt werden.

Wie setze ich das?

Gehe einfach zum Internet Explorer und erledige beide Sachen manuell. Das ist es. Kein Geheimnis.

Mach es durch deinen Code.

Methode 1:

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...

Dies wird definitiv keine Fehler anzeigen und der Browser wird geöffnet und navigiert auch zur URL.

ABER Dieses identifiziert kein Element und daher können Sie nicht fortfahren.

Warum? Weil wir den Fehler simuliert haben und IE aufgefordert haben, diese URL zu öffnen. Selen identifiziert Elemente jedoch nur, wenn der Zoom des Browsers 100% beträgt. Standard . Der endgültige Code wäre also

Methode 2 Der robuste und vollständige Beweisweg:

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...

Hoffe das hilft. Lassen Sie mich wissen, ob weitere Informationen erforderlich sind.

7
NiNa

Beim Festlegen der IgnoreZoomLevel-Eigenschaft können Sie den Browser ohne Fehler öffnen. Der Test findet jedoch keine Elemente mit einer anderen Zoomstufe als 100%.

Das Senden von Strg + 0 hat ebenfalls nicht immer das erwartete Ergebnis, abhängig von den DPI-Einstellungen Ihres Systems. Wenn Sie Mittel (120 dpi) oder Größer (144 dpi) (Windows 7-Einstellungen) ausgewählt haben, wird mit Strg + 0 der Zoom auf 125% oder 150% eingestellt.

Eine Problemumgehung, die ich gefunden habe, ist das Einstellen der Zoomstufe entsprechend den DPI-Einstellungen, indem Sie die Einstellung vor dem Öffnen von IE in der Registrierung bearbeiten. Dies erfordert keine Administratorrechte, da sich alles unter HKEY_CURRENT_USER befindet.

Dies ist meine kleine Helferklasse, die ich mir ausgedacht habe. (C #)

using Microsoft.Win32;

namespace WebAutomation.Helper
{
    public static class InternetExplorerHelper
    {
        private static int m_PreviousZoomFactor = 0;

        public static void SetZoom100()
        {
            // Get DPI setting.
            RegistryKey dpiRegistryKey = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop\\WindowMetrics");
            int dpi = (int)dpiRegistryKey.GetValue("AppliedDPI");
            // 96 DPI / Smaller / 100%
            int zoomFactor100Percent = 100000;
            switch (dpi)
            {
                case 120: // Medium / 125%
                    zoomFactor100Percent = 80000;
                    break;
                case 144: // Larger / 150%
                    zoomFactor100Percent = 66667;
                    break;
            }
            // Get IE zoom.
            RegistryKey zoomRegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer\\Zoom", true);
            int currentZoomFactor = (int)zoomRegistryKey.GetValue("ZoomFactor");
            if (currentZoomFactor != zoomFactor100Percent)
            {
                // Set IE zoom and remember the previous value.
                zoomRegistryKey.SetValue("ZoomFactor", zoomFactor100Percent, RegistryValueKind.DWord);
                m_PreviousZoomFactor = currentZoomFactor;
            }
        }

        public static void ResetZoom()
        {
            if (m_PreviousZoomFactor > 0)
            {
                // Reapply the previous value.
                RegistryKey zoomRegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer\\Zoom", true);
                zoomRegistryKey.SetValue("ZoomFactor", m_PreviousZoomFactor, RegistryValueKind.DWord);
            }
        }
    }
}

Ich habe die Werte gefunden, die den ZoomFactor-Wert in der Registrierung bei verschiedenen System-DPI-Einstellungen vergleichen, wobei IE auf 100% eingestellt ist. In neueren Windows-Versionen gibt es mehr als 3 DPI-Einstellungen. Daher müssen Sie die Klasse erweitern, wenn Sie diese benötigen.

Sie können dies auch ändern, um eine beliebige Zoomstufe zu berechnen, aber das war für mich nicht relevant.

Ich rufe einfach InternetExplorerHelper.SetZoom100(); auf, bevor ich IE öffne, und InternetExplorerHelper.ResetZoom(), nachdem ich es geschlossen habe.

6
K. Hendrik
InternetExplorerOptions options = new InternetExplorerOptions();
options.ignoreZoomSettings() ;
driver = new RemoteWebDriver(new URL("http://localhost:8888/wd/hub"),options);
2
Belnex

Dies geschieht im Wesentlichen, wenn Ihr Browser auf eine andere Zoomstufe als 100% eingestellt ist (passiert, wenn Sie bei gedrückter STRG-Taste auf einer Webseite einen Bildlauf durchführen). Sie können dies beheben, indem Sie den oben genannten Code angeben, damit Selen die Zoomstufe des Browsers ignorieren kann. Sie können den Browser einfach öffnen und die Zoomstufe auf 100% zurücksetzen, indem Sie entweder auf Einstellungen gehen oder die Tastenkombination Strg + 0 verwenden IE11 und Chrom)

2

Vielen Dank für den Beitrag, das hat wirklich für mich funktioniert. Für die Korrektur der Zoomstufe:

InternetExplorerOptions options = new InternetExplorerOptions {  IgnoreZoomLevel= true };
driver = new InternetExplorerDriver(@"C:\seleniumreferences\IEDriverServer32", options);
2
S Kotra

Oder Gehen Sie zu Internet Explorer-Optionen> Erweitert .__ Aktivieren Sie das Kontrollkästchen "Zoomstufe für neue Fenster und Registerkarten zurücksetzen".

Klicken Sie auf Link, um das Bild anzuzeigen ---> Internet Explorer-Optionen> Erweitert

1
JeffG
InternetExplorerOptions ieOptions = new InternetExplorerOptions();
ieOptions.IgnoreZoomLevel = true;
driver = new InternetExplorerDriver(driverFilePath, ieOptions);
0
William

Setzen Sie die IgnoreZoomLevel-Eigenschaft auf true und übergeben Sie sie als InternetExplorerOptions an den Treiber.

InternetExplorerOptions options = new InternetExplorerOptions();
options.IgnoreZoomLevel = true;
IWebDriver driver = new InternetExplorerDriver(IEDriverLocation,options);
0

Arbeitscode mit Java

InternetExplorerOptions capabilities= new InternetExplorerOptions();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver", Constant.drivers + "\\IEDriverServer.exe");
            driver = new InternetExplorerDriver(capabilities);
            driver.manage().window().maximize();
0
Hamesh

Wie Tomas Lyckens Antwort sagte, es wird keine Sprache angegeben, daher werde ich meine Lösung in Python teilen:

capabilities = DesiredCapabilities.INTERNETEXPLORER
capabilities['ignoreZoomSetting'] = True
driver = webdriver.Ie(capabilities=capabilities)
0
Pivoman