我想讓Selenium在測試時安裝擴展。我正在使用最新的獨立JAR(selenium-server-standalone-2.26.0.jar
)和Firefox 17來運行我的測試。當我不想添加擴展名時,該程序完美工作。硒試圖添加擴展時拋出錯誤 - 「無法連接到二進制FirefoxBinary」和「無法找到包含擴展ID的節點」
我已驗證多次,我試圖使用的擴展文件存在,並可以由程序訪問,事實上包含有效的install.rdf,因爲我用它來手動安裝擴展名在我的默認Firefox個人資料。
我的代碼是:
FirefoxProfile fp=new FirefoxProfile();
File ext=new File("myext-2.17.xpi");
try {
fp.addExtension(ext);
fp.setPreference("extensions.myext.version", "myext-2.17");
} catch (Exception e2) {
e2.printStackTrace();
}
WebDriver wd=new FirefoxDriver(fp);
完整的堆棧跟蹤如下:使用FF16和FF9也存在
Exception in thread "pool-1-thread-2" org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(C:\Program Files (x86)\Mozilla Firefox\firefox.exe) on port 7055; process output follows:
null
Build info: version: '2.26.0', revision: '18041', time: '2012-11-01 19:33:38'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_02'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:122)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:243)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:109)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:189)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:178)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at TrafficGenerator.BrowserWindow.run(BrowserWindow.java:80)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: Cannot locate node containing extension id: C:\Users\Vivek\AppData\Local\Temp\unzip3924903411706376479stream\install.rdf
Build info: version: '2.26.0', revision: '18041', time: '2012-11-01 19:33:38'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_02'
Driver info: driver.version: FirefoxDriver
Build info: version: '2.26.0', revision: '18041', time: '2012-11-01 19:33:38'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_02'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.FileExtension.readIdFromInstallRdf(FileExtension.java:141)
at org.openqa.selenium.firefox.internal.FileExtension.writeTo(FileExtension.java:60)
at org.openqa.selenium.firefox.FirefoxProfile.installExtensions(FirefoxProfile.java:465)
at org.openqa.selenium.firefox.FirefoxProfile.layoutOnDisk(FirefoxProfile.java:443)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:77)
... 10 more
錯誤。 關於什麼可能是錯誤的原因以及我如何解決它的任何想法?
如果將您的Firefox版本降級到16,會發生什麼情況? – Arran
@Arran - 在FF 16和FF 9上發生同樣的問題。 – bcosynot
反覆調試。註釋掉除頂線之外的所有內容,看看是否失敗。然後繼續,直到它。配置文件可能不是傳遞給驅動程序的合法對象。 – Shawn