2013-03-06 78 views
1

我需要接受一個I​​E瀏覽器使用JavaScript使用PHP的webdriver硒 這適用於FF和Chrome警報,但IE無法硒:與IE瀏覽器處理JavaScript警報在Facebook的PHP-webdriver的

下面的代碼我中號使用:

$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); 

我知道有this answer for Javathis answer for C#,但要尋找一個PHP特定的解決方案,因爲Java方法是不一樣的

回答

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驅動程序,因此如果您願意,您可以對所有驅動程序使用相同的代碼。祝你好運!

+0

謝謝@tannermares,工作。 – CEich 2013-03-07 00:08:20

+0

$ capabilities = array(WebDriverCapabilityType :: BROWSER_NAME =>'firefox'); $ driver = new WebDriver($ wd_host,$ capabilities); 我該如何獲得會話? – 2013-12-04 10:21:15