0

Я хотел бы сохранить некоторые ресурсы на своих низкоуровневых окнах Windows, запустив браузер в режиме безглавых. Насколько мне известно, PhantomJS + GhostDriver является стандартным выбором для такой задачи, которая будет использоваться с Selenium Webdriver. Однако после того, как он попытался и сразу же столкнулся с проблемами с обработкой предупреждений, которые doesn't seem to be supported by PhantomJS. В частности, следующее исключение возвращается:Автоматизация без головы/GUIless с Selenium Webdriver

[ERROR - 2016-08-01T04:24:24.894Z] RouterReqHand - _handle.error - {"name":"Invalid Command Method"," . . . "} 

в результате не поддерживает getAlertText WebDriver Command при выполнении:

Alert alert = driver.switchTo().alert(); 

и конкретно этот метод реализован в EventFiringWebDriver:

public Alert alert() { 
    return targetLocator.alert(); 
} 

Я Я ищу альтернативный подход или возможное обходное решение. Кто угодно?

+0

Что вы имеете в виду, похоже, не поддерживается PhantomJS ?? Это просто означает, что предупреждение не будет обрабатываться самим драйвером, вам нужно обработать его, переключившись на предупреждение и принять или отклонить в соответствии с вашим выбором ... –

+0

@SaurabhGaur Я имею в виду, что 'getAlertText' WebDriver' Command' не поддерживается внутренне и будет вернуть исключение. См. Мое редактирование. –

+0

Вы вызываете неправильный метод. Это 'alert.getText();' вместо .. :) –

ответ

2

Я был в состоянии работать вокруг этого путем выполнения предупредительной обработки с использованием JavaScript непосредственно, как это:

JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; 
jsExecutor.executeScript("window.alert = function(){}"); 
jsExecutor.executeScript("window.confirm = function(){return true;}"); 

На данный момент, кажется, нет никакого способа, чтобы выполнить эту операцию непосредственно через WebDriver интерфейс для PhantomJS ,

+1

Также решение, если вы запускаете хром-канарейку в режиме безголоса, спасибо! –

Смежные вопросы