Тайм-аут операции после возврата из всплывающего окна в главное окно

Я использую PHPUnit с расширением Selenium2.

Я открываю всплывающее окно, ввожу данные и нажимаю кнопку отправки — после этого всплывающее окно закрывается.

Позже я переключаюсь обратно в главное окно — все это работает без нареканий. Но после обратного переключения никакие другие шаги моих тестов не выполняются, и тест завершается неудачно со следующим сообщением об ошибке:

PHPUnit_Extensions_Selenium2TestCase_NoSeleniumException: Error connection[28] to http://localhost:4444/wd/hub/session/d6977d2b-76ac-4754-9a08-5119413b0965/element/4/submit: Operation timed out after 60004 milliseconds with 0 bytes received

Для полноты кода:

$windowHandles = $this->windowHandles();

$this->window($windowHandles[1]);

$this->byCssSelector('input[id=email]')->value($fbUsername);
$this->byCssSelector('input[id=pass]')->value($fbPassword);
$this->byCssSelector('input[id=u_0_1]')->submit();

$this->window($windowHandles[0]);

Я пропустил какой-то необходимый шаг? Должен ли я чего-то ждать? Любые указатели помогут.

1

Решение

@akluth, ошибка была обнаружением и будет исправлена. Вы можете увидеть больше информации Вот. Я жду новый релиз.

2

Другие решения

я не PHP парень, но я надеюсь, что следующий код даст вам некоторые идеи, как справиться с этим. Примечание: следующий код C #

//You probably missing this the concept of handling current and original handle
string currentHandle = driver.CurrentWindowHandle;
ReadOnlyCollection<string> originalHandles = driver.WindowHandles;

// Cause the pop-up to appear
driver.FindElement(By.XPath("//*[@id='webtraffic_popup_start_button']")).Click();

// WebDriverWait.Until<T> waits until the delegate returns
// a non-null value for object types. We can leverage this
// behaviour to return the pop-up window handle.
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
string popupWindowHandle = wait.Until<string>((d) =>
{
string foundHandle = null;

// Subtract out the list of known handles. In the case of a single
// pop-up, the newHandles list will only have one value.
List<string> newHandles = driver.CurrentWindowHandles.Except(originalHandles).ToList();
if (newHandles.Count > 0)
{
foundHandle = newHandles[0];
}

return foundHandle;
});

driver.SwitchTo().Window(popupWindowHandle);

// Do whatever you need to on the pop-up browser, then...
driver.Close();
driver.SwitchToWindow(currentHandle);

Как вы сказали, все работает без нареканий. Но после переключения не выполняются другие этапы моих тестов, и тест не проходит
потому что у вас не правильно переключиться обратно на оригинальный дескриптор окна.

Этот код скопирован с Вот
Спасибо @JimEvans за объяснение этого процесса.

0

Похоже, ваш браузер обновлен. Вы должны обновить ваши библиотеки селена соответственно.

-1
По вопросам рекламы [email protected]