1

我需要使用 php webdriver for selenium 接受 IE javascript 警报 这适用于 FF 和 Chrome,但 IE 失败

这是我正在使用的代码:

$web_driver = new WebDriver();
// opens Internet explorer browser
$session = $web_driver->session('internet explorer');
// Navigates to page that has JS alert on close.
$session->open('http://mypage.com/');
// Closes Offer window
$session->deleteWindow();
// Accepts alert to leave page
$session->accept_alert(); // Except accept_alert isn't working correctly in IE
// Closes last window
$session->close();
// Kill session for garbage collection
unset($session);

我知道Java这个答案,C#有这个答案,但是我正在寻找一个 PHP 特定的解决方案,因为 Java 方法不一样

4

1 回答 1

1

这让我永远想通了。我之前所做的是在deleteWindow()通话之后,抓住最新的窗口句柄并将焦点设置在它上面。一旦您获得焦点警报,您就可以调用accept_alert()它,窗口将按预期关闭。这是想法。

$web_driver = new WebDriver();
$session = $web_driver->session('internet explorer');
$session->open('http://mypage.com/');
$session->deleteWindow();

// Here's the new part
$handles = $this->_session->window_handles(); // stores array of window handles
$new_handle = end($handles); // grabs the newest handle, in this case our alert
$this->_session->focusWindow($new_handle); // gives the alert window focus

// Should now work as expected
$session->accept_alert();
$session->close();
unset($session);

这也适用于 firefox 和 chrome 驱动程序,因此如果您愿意,可以对所有驱动程序使用相同的代码。祝你好运!

于 2013-03-06T23:46:46.750 回答