2012-01-12 78 views
4

我目前正在嘗試使用webdriver的HtmlUnitDriver執行JavaScript彈出窗口,併產生了一個奇怪的結果。HtmlUnitDriver中的Webdriver和Popups

同樣的代碼行使用FirefoxDriver可以正常工作,但是一旦切換到HtmlUnitDriver,它將停止工作。我使用的是簡單的代碼是在這裏:

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

是HtmlUnitDriver能夠處理Java的彈出窗口,或者是這個HtmlUnitDriver的極限點。

這是一個Javascript確認彈出窗口。我們嘗試使用HTMLUnitDriver的Firefox屬性:

driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3); 

這是不成功的。

一個側面的問題,是否需要爲HTMLUnitDriver啓用JavaScript以便我們與Confirm彈出框進行交互?如果是,有誰知道我們如何能打開這個?

driver = new HtmlUnitDriver(capabilities); 

似乎不起作用,不被認可。

任何幫助將不勝感激。 乾杯

回答

4

這似乎是一個長期運行的問題 https://code.google.com/p/selenium/issues/detail?id=1105

我用一個JavaScript解決方法的確認彈出。以下是Python中的一個示例:

self.driver = WebDriver(
    command_executor='http://localhost:4444/wd/hub', 
    desired_capabilities=DesiredCapabilities.HTMLUNIT) 

self.driver.execute_script("window.confirm = function(msg) {return true;};") 
self.find_element_by_id('mybutton').click() 

在使用它之前覆蓋confirm()函數並使其在Accept中返回true。然後你觸發點擊事件。將其更改爲「取消」爲false。

很整齊。我發現這在StackOverflow的其他地方,但不記得在哪裏。

+0

我怎麼能在java中做同樣的事情 – 2015-09-24 15:23:38