API Selenium WebDriver getWindowHandles() всегда возвращает 2147483649

Я использую Selenium для автоматизации некоторых тестов. API WebDriver getWindowHandle() всегда возвращает 2147483649. На самом деле он должен возвращать буквенно-цифровую строку, например {9e10f4f4-2da6-ef43-b463-1b0d576e7dae}, которая обычно меняется при каждом запуске теста. Но я всегда получаю 2147483649. Я использую Selenium 3.5.1 и Firefox 55.0.2.

Код для воспроизведения проблемы-

Ява

public class SeleniumExample {
    public static void main(String args[]){
        System.setProperty("webdriver.gecko.driver","/Users/raghavendr.kolisetty/Downloads/geckodriver");
        WebDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
        driver.get("http://www.google.com");
        System.out.println("printing test handles "+driver.getWindowHandle());
    }
}

ПОМ

<properties>
    <selenium.java.version>3.5.1</selenium.java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-firefox-driver</artifactId>
        <version>${selenium.java.version}</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>${selenium.java.version}</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Вывод – печать тестовых дескрипторов 2 147483649

Может ли кто-нибудь объяснить, что я делаю неправильно. Спасибо


person Kolisetty Raghavendra    schedule 29.08.2017    source источник
comment
Объявите строковую переменную и присвойте ей дескриптор окна.   -  person iamsankalp89    schedule 30.08.2017
comment
какая разница? во всяком случае, я пробовал, и результат тот же.   -  person Kolisetty Raghavendra    schedule 30.08.2017
comment
вы не получаете желаемого результата   -  person iamsankalp89    schedule 30.08.2017
comment
Первый раз o/p: печать тестовых дескрипторов {9e85b26d-db78-44fa-98f6-dcf7592f9a0f} Второй o/p печать тестовых дескрипторов {39016fc9-96cf-4a59-991d-aec3701e68f0}   -  person iamsankalp89    schedule 30.08.2017
comment
ох! тогда это должна быть проблема с моей машиной/средой. Не могли бы вы поделиться информацией о вашей среде. Я использую Selenium — 3.5.1, Java — 1.8.0_144, Gecko — v0.18.0, Firefox — 55.0.2. Пожалуйста, добавьте другие детали, если я что-то упустил   -  person Kolisetty Raghavendra    schedule 30.08.2017
comment
Я не думаю, что ты что-то пропустил, все в порядке. Попробуйте через браузер Chrome   -  person iamsankalp89    schedule 30.08.2017
comment
В заданном свойстве используйте geckodriver.exe, возможно, вы получите желаемый результат.   -  person iamsankalp89    schedule 30.08.2017
comment
Я использую мак. Никаких exe-файлов :)   -  person Kolisetty Raghavendra    schedule 30.08.2017
comment
Хорошо, тогда в чем причина того, что мы не получаем желаемого результата, мы должны найти, вы пробовали в хроме?   -  person iamsankalp89    schedule 30.08.2017
comment
да, я только что сделал. С хромом работает нормально. У меня есть дескриптор окна, похожий на {9e85b26d-db78-44fa-98f6-dcf7592f9a0f}. Проблема с фаерфоксом. Я перешел на Firefox 54, но у меня все еще есть тот же номер 2147483649.   -  person Kolisetty Raghavendra    schedule 30.08.2017
comment
Это означает, что ваш и мой код верны, но я не понимаю, почему это вызывает проблемы с вашим firefox. Один раз попробуй с баночкой 2,53 и фф 45,0   -  person iamsankalp89    schedule 30.08.2017
comment
Я проверил его с 2.4 и 43.0, и он работал нормально. Я попробую разные версии geckodriver и посмотрю   -  person Kolisetty Raghavendra    schedule 30.08.2017
comment
Хорошо, вы проверяете, и если вы найдете мой ответ удовлетворительным, пожалуйста, проголосуйте   -  person iamsankalp89    schedule 30.08.2017
comment
это работает @Kolisetty Raghavendra   -  person iamsankalp89    schedule 30.08.2017


Ответы (3)


Используйте этот код. Надеюсь, он сработает

String Parentswindows = driver.getWindowHandle();

    System.out.println("Parentswindows : " + Parentswindows);
person Zakaria Shahed    schedule 30.08.2017

Вы пробовали это-

String window1 = driver.getWindowHandle();
System.out.println("Second window handle is "+window1);
person Kapil    schedule 30.08.2017

Попробуй это

public class SeleniumExample {
public static void main(String args[]){
System.setProperty("webdriver.gecko.driver","/Users/raghavendr.kolisetty/Downloads/geckodriver");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
driver.get("http://www.google.com");
System.out.println("printing test handles "+driver.getWindowHandle());
}
}

Замените свой код на этот:

public class SeleniumExample {
public static void main(String args[]){
System.setProperty("webdriver.gecko.driver","/Users/raghavendr.kolisetty/Downloads/geckodriver");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
driver.get("http://www.google.com");
String window1=driver.getWindowHandle();
System.out.println("printing test handles "+window1);
}
}
person iamsankalp89    schedule 30.08.2017