PhantomJS WebDriver без головы: метод.click не имеет никакого эффекта
Я надеюсь, что кто-нибудь может помочь мне с моей проблемой фантома. Я использую версию 1.9.8 в Unix 64bit в качестве узла, который регистрируется в концентраторе селена, работающем на jenkins. Если я перейти на страницу HTML со ссылкой (которая не имеет ID
или же name
Вот почему я обращаюсь к нему через xpath
- К сожалению, я не могу изменить HTML-код, так как это внешний ввод), я пытаюсь щелкнуть по нему, чтобы перейти на следующую страницу. При использовании драйвера Firefox это работало без проблем, и если я запускаю локальный сервер selenium (windows, phantomJS v. 1.9.8), он работает также.
Мой код:
System.out.println("current url before click: " + getDriver().getCurrentUrl());
getDriver().findElement(By.xpath("//a")).click();
System.out.println("current url after click: " + getDriver().getCurrentUrl());
Выход на местный селен (окна):
current url before click: https://initialpage.html
current url after click: https://www.my-link.com
Вывод на удаленную селеновую сетку (unix):
current url before click: https://initialpage.html
current url after click: https://initialpage.html
Там нет ошибки или что-то подобное, просто кажется, что драйвер остается на старой странице. Я уже пробовал разные phantomjs.cli.args
при создании экземпляра WebDriver, добавив несколько thread.sleep()
и замена click()
от
getDriver().navigate().to(getDriver().findElement(By.xpath("//a")).getAttribute("href"));
но результат остается прежним.
На всякий случай, вот как я создаю экземпляр веб-драйвера:
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), DesiredCapabilities.phantomjs());
Я ценю любую помощь, спасибо за усилия, ребята! Если остались какие-либо вопросы, не стесняйтесь спрашивать! Заранее спасибо!
1 ответ
Так что на тот случай, если кто-нибудь наткнется на эту тему, мне наконец-то удалось разобраться после нескольких часов отчаяния. Проблема заключалась в создании экземпляра веб-драйвера, в котором отсутствовало свойство ssl. Вот как это работает для меня сейчас:
final ArrayList<String> cliArguments = new ArrayList<String>();
cliArguments.add("--ssl-protocol=any");
final DesiredCapabilities dCap = DesiredCapabilities.phantomjs();
dCap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArguments);
driver = new RemoteWebDriver(new URL("http://servername:4444/wd/hub"), dCap);