2016-09-29 81 views
0

我在Firefox版本48.x.x上使用Selenium WebDriver。爲了這個工作,我需要使用GeckoDriver/Marionette驅動程序來與Firefox驅動程序交談。在舊版本的Firefox中,Selenium驅動程序能夠使用driver.getWindowHandle()獲得瀏覽器窗口的會話ID,但是在新的(?)Gecko/Marionette驅動程序中,此函數返回一個短整數,而不是一個長度爲十六進制的文本字符串。這是一個錯誤?或Gecko/Marionette驅動程序的新功能?Selenium驅動程序 - 窗口句柄混淆了

這裏就是我遇到了麻煩:

1 - 我使用的Gecko /木偶司機

final File file = new File("/Applications/geckodriver"); 
System.setProperty("webdriver.gecko.driver", file.getAbsolutePath()); 
driver = new FirefoxDriver(); 

它工作正常啓動Firefox瀏覽器。然後,我在瀏覽器窗口中的會話ID的值打印出來:

System.out.println("WindowHandle ID = " + driver.getWindowHandle()); 

它顯示了一些短整數20是不正確10之間的某個地方。

然後,我打印出來的瀏覽器會話,我能夠看到實際的會話ID(之間的MAC場()):

Brwowser Session = BrowserSession [driver=FirefoxDriver: Firefox on MAC (**bc4eb9db-608b-5643-8ec9-136b6c54f6a2**), user=Admin, lastPage=null] 

現在,我認爲新的Gecko /木偶搞砸driver.getWindowHandle()功能?由於這個顯示限制器,我無法將Selenium控件從一個窗口切換到另一個窗口或彈出窗口。

問題

反正是有,我可以得到實際的瀏覽器窗口中的會話ID?請幫忙。我真的需要克服這個巨大的障礙。我一直在尋找解決方案,但一無所獲。

我正在用Java編寫。

非常感謝。

+0

你能提硒版本中使用? –

+0

@Chandra ... Selenium v​​ 3.0 beta; Firefox v 48.它僅適用於窗口。我試圖爲我的Mac安裝相同的設置,但無法使用。 –

回答

0

使用Selenium 2.53.1 +火狐(V 48)用下面的代碼

System.setProperty("webdriver.firefox.marionette", file.getAbsolutePath()); 

System.setProperty("webdriver.gecko.driver", file.getAbsolutePath()); 
+0

錢德拉..我沒有使用第二個設置。我試試第一個,看看它能否讓我渡過這個障礙。謝謝 –

+0

Chandra ..只是嘗試,它的第一個選項是System.setProperty(「webdriver.firefox.marionette」,file.getAbsolutePath()); –