geb geckodriver 无法正常工作(启动多个浏览器 window)
geb geckodriver not working properly (launching multiple browser window)
我想在多个浏览器中使用 geb,特别是在 firefox 中。但是我让 firefox 启动多个 windows 而没有插入 url,最终失败了。但是,我对 chrome 没有任何问题。 Chrome 运行良好。我正在使用 firefox 57.0.4(32 位)、geckodriver 0.20.1 和 selenium 3.11.0。
这就是我在 GebConfig.groovy 文件中为 firefox(geckodriver) 配置的方式。
driver = {
System.setProperty("webdriver.gecko.driver", "C:\Data\selenium\geckodriver.exe")
DesiredCapabilities capabilities = DesiredCapabilities.firefox()
capabilities.setCapability("marionette", true);
new FirefoxDriver(capabilities)
}
我也尝试过这样的简单配置:
driver="org.openqa.selenium.firefox.FirefoxDriver"
他们都打开了多个新的 windows,特别是 9 个新的 firefox windows 在崩溃之前都失败了。下面是堆栈跟踪。
1524422284063 geckodriver INFO geckodriver 0.20.1
1524422284107 geckodriver INFO Listening on 127.0.0.1:23600
1524422284801 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.t9ACOIsvj903"
1524422286509 Marionette INFO Enabled via --marionette
[Parent 5248, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 6128, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 6128, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422290031 Marionette INFO Listening on port 53659
1524422290543 Marionette DEBUG Register listener.js for window
4294967297
1524422291404 geckodriver INFO geckodriver 0.20.1
1524422291444 geckodriver INFO Listening on 127.0.0.1:37977
1524422291888 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.TDpwyZXqxyTB"
1524422293344 Marionette INFO Enabled via --marionette
[Parent 9756, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422296749 Marionette INFO Listening on port 60160
1524422297189 Marionette DEBUG Register listener.js for window
4294967297
1524422298143 geckodriver INFO geckodriver 0.20.1
1524422298191 geckodriver INFO Listening on 127.0.0.1:32782
1524422298377 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.yBcRA1dKXoGT"
1524422299521 Marionette INFO Enabled via --marionette
[Child 16340, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422302872 Marionette INFO Listening on port 63356
1524422303045 Marionette DEBUG Register listener.js for window
4294967297
1524422303852 geckodriver INFO geckodriver 0.20.1
1524422303895 geckodriver INFO Listening on 127.0.0.1:19586
1524422304228 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.9ev5FY0xc1i7"
1524422305543 Marionette INFO Enabled via --marionette
[GFX1-]: Could not get a DXGI adapter
[GFX1-]: Could not get a DXGI adapter
[Child 14868, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 14868, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422310032 Marionette INFO Listening on port 64844
[GFX1-]: Could not get a DXGI adapter
1524422310604 Marionette DEBUG Register listener.js for window
4294967297
1524422321813 geckodriver INFO geckodriver 0.20.1
1524422321858 geckodriver INFO Listening on 127.0.0.1:26836
1524422322191 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.ibDRBSonhkXz"
1524422323777 Marionette INFO Enabled via --marionette
[GFX1-]: Could not get a DXGI adapter
[GFX1-]: ClientLayerManager::BeginTransaction with IPC channel down. GPU
process may have died.
[Parent 10436, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 16792, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 16792, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[GFX1-]: Could not get a DXGI adapter
1524422327647 Marionette INFO Listening on port 49671
1524422327909 Marionette DEBUG Register listener.js for window
4294967297
[GFX1-]: Could not get a DXGI adapter
1524422328854 geckodriver INFO geckodriver 0.20.1
1524422328899 geckodriver INFO Listening on 127.0.0.1:41041
1524422329094 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.nF37Bcb1rsbM"
1524422330408 Marionette INFO Enabled via --marionette
[Parent 10360, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 12412, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 12412, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422335433 Marionette INFO Listening on port 55596
1524422335714 Marionette DEBUG Register listener.js for window
4294967297
1524422336611 geckodriver INFO geckodriver 0.20.1
1524422336657 geckodriver INFO Listening on 127.0.0.1:44307
1524422337007 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.BZK9Y7YfOaPw"
1524422338399 Marionette INFO Enabled via --marionette
[Child 5860, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 5860, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422348219 Marionette INFO Listening on port 65437
1524422348734 Marionette DEBUG Register listener.js for window
4294967297
1524422350248 geckodriver INFO geckodriver 0.20.1
1524422350322 geckodriver INFO Listening on 127.0.0.1:36341
1524422350716 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.WMfmoDbCDTAT"
1524422353025 Marionette INFO Enabled via --marionette
[Child 10468, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 10468, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422358314 Marionette INFO Listening on port 56794
1524422358557 Marionette DEBUG Register listener.js for window
4294967297
1524422359719 geckodriver INFO geckodriver 0.20.1
1524422359781 geckodriver INFO Listening on 127.0.0.1:29271
1524422360457 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.L8VJnzbpCkrK"
1524422362362 Marionette INFO Enabled via --marionette
[Parent 6760, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422368470 Marionette INFO Listening on port 54188
1524422368810 Marionette DEBUG Register listener.js for window
4294967297
Tests run: 6, Failures: 0, Errors: 6, Skipped: 0, Time elapsed: 102.379 sec
<<< FAILURE! - in MyTestSuite
mytestfunction(MyTestSuite) Time elapsed: 29.182 sec <<< ERROR!
geb.driver.DriverCreationException: failed to create driver from callback '
script1524422266628441905114$_run_closure1@2643ed03'
at MyTestSuite.mytestfunction(MyTestSuite.groovy:25)
Caused by: org.openqa.selenium.SessionNotCreatedException:
Unable to create new remote session. desired capabilities = Capabilities
[{marionette=true, browserName=firefox, moz:firefoxOptions=
{binary=Optional.empty, args=[], legacy=null, logLevel=null, prefs={},
profile=null}, version=, platform=ANY}], required capabilities =
Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[],
legacy=null, logLevel=null, prefs={}, profile=null}}]
Build info: version: '3.3.1', revision: '5234b325d5', time: '2017-03-10
09:10:29 +0000'
System info: host: 'Hostname', ip: 'xxx.xxx.xx.xx', os.name: 'Windows 7',
os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_144'
Driver info: driver.version: FirefoxDriver
我现在很困惑,因为到目前为止论坛上所有可能的解决方案都不起作用。
这是 GebConfig.groovy 文件:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.os.ExecutableFinder
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
reportsDir = "target/geb-reports"
driver = null
driver = {
System.setProperty("webdriver.gecko.driver", "D:\eclipse-jee-workspace\geb-example-maven\drivers\geckodriver.exe")
DesiredCapabilities capabilities = DesiredCapabilities.firefox()
capabilities.setCapability("marionette", true);
new FirefoxDriver(capabilities)
}
baseUrl = "http://gebish.org"
这是 GebishOrgSpec .groovy 文件
import geb.spock.GebSpec
class GebishOrgSpec extends GebSpec {
def "can get to the current Book of Geb"() {
when:
to GebishOrgHomePage
and:
manualsMenu.open()
then:
manualsMenu.links[0].text().startsWith("current")
when:
manualsMenu.links[0].click()
then:
at TheBookOfGebPage
}
}
这是 GebishOrgHomePage.groovy 文件
import geb.Page
class GebishOrgHomePage extends Page {
static at = { title == "Geb - Very Groovy Browser Automation" }
static content = {
manualsMenu { module(ManualsMenuModule) }
}
}
这里是 ManualsMenuModule.groovy
import geb.Module
class ManualsMenuModule extends Module {
static content = {
toggle { $("div.menu a.manuals") }
linksContainer { $("#manuals-menu") }
links { linksContainer.find("a") }
}
void open() {
toggle.click()
waitFor { !linksContainer.hasClass("animating") }
}
}
这是TheBookOfGebPage.groovy
import geb.Page
class TheBookOfGebPage extends Page {
static at = { title.startsWith("The Book Of Geb") }
}
这是pom
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.gebish.example</groupId>
<artifactId>geb-maven-example</artifactId>
<packaging>jar</packaging>
<version>1</version>
<name>Geb Maven Example</name>
<url>http://gebish.org</url>
<properties>
<gebVersion>1.1.1</gebVersion>
<seleniumVersion>3.3.1</seleniumVersion>
<groovyVersion>2.4.11</groovyVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.gebish</groupId>
<artifactId>geb-spock</artifactId>
<version>${gebVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>${seleniumVersion}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>${seleniumVersion}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-ie-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-ie-driver</artifactId>
<version>${seleniumVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>*Spec.*</include>
</includes>
<systemPropertyVariables>
<geb.build.reportsDir>target/test-reports/geb</geb.build.reportsDir>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>com.rimerosolutions.maven.plugins</groupId>
<artifactId>wrapper-maven-plugin</artifactId>
<version>0.0.4</version>
<configuration>
<mavenVersion>3.3.3</mavenVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.github.webdriverextensions</groupId>
<artifactId>webdriverextensions-maven-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<goals>
<goal>install-drivers</goal>
</goals>
</execution>
</executions>
<configuration>
<drivers>
<driver>
<name>chromedriver</name>
<version>2.36</version>
<platform>windows</platform>
</driver>
<!-- <driver>
<name>chromedriver</name>
<version>2.36</version>
<platform>windows</platform>
</driver>-->
<!-- <driver>
<name>geckodriver</name>
<version>0.14.0</version>
<platform>windows</platform>
</driver>-->
<driver>
<name>geckodriver</name>
<version>0.20.1</version>
<platform>windows</platform>
</driver>
</drivers>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e
settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.github.webdriverextensions
</groupId>
<artifactId>
webdriverextensions-maven-plugin
</artifactId>
<versionRange>
[3.1.1,)
</versionRange>
<goals>
<goal>install-drivers</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.codehaus.gmaven
</groupId>
<artifactId>
gmaven-plugin
</artifactId>
<versionRange>[1.5,)</versionRange>
<goals>
<goal>testCompile</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
`
我在尝试使用 x64 驱动程序时遇到了类似的问题。每个 > 0.14.0 的版本都显示此症状(4 个空浏览器 windows,4 个 geckodriver.exe 实例需要手动终止)。一旦我将我的项目恢复到 0.14.0,即使使用当前的 FF Quantum 59.0.2(64 位),一切都像魅力一样再次运行。
当然,这不是解决方案,而是解决方法。 Geckodriver 是否有相应的票我不知道。我还没看
更新: 我仍在使用 Selenium 3.0.1。也许这就是为什么我不能使用 Geckodriver 的 never 版本,因为在 release page 上它说对于驱动程序版本 0.15 你至少需要 Selenium 3.3。但是正如您所说,您使用的是 Selenium 3.11,这应该不是问题。即使是 Geckodriver 0.19.0 也只需要 Selenium 3.5。但也许您的 Maven 设置存在缺陷,并且以某种方式引入了较旧的 Selenium 版本。你可以检查这个。
我想在多个浏览器中使用 geb,特别是在 firefox 中。但是我让 firefox 启动多个 windows 而没有插入 url,最终失败了。但是,我对 chrome 没有任何问题。 Chrome 运行良好。我正在使用 firefox 57.0.4(32 位)、geckodriver 0.20.1 和 selenium 3.11.0。
这就是我在 GebConfig.groovy 文件中为 firefox(geckodriver) 配置的方式。
driver = {
System.setProperty("webdriver.gecko.driver", "C:\Data\selenium\geckodriver.exe")
DesiredCapabilities capabilities = DesiredCapabilities.firefox()
capabilities.setCapability("marionette", true);
new FirefoxDriver(capabilities)
}
我也尝试过这样的简单配置:
driver="org.openqa.selenium.firefox.FirefoxDriver"
他们都打开了多个新的 windows,特别是 9 个新的 firefox windows 在崩溃之前都失败了。下面是堆栈跟踪。
1524422284063 geckodriver INFO geckodriver 0.20.1
1524422284107 geckodriver INFO Listening on 127.0.0.1:23600
1524422284801 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.t9ACOIsvj903"
1524422286509 Marionette INFO Enabled via --marionette
[Parent 5248, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 6128, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 6128, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422290031 Marionette INFO Listening on port 53659
1524422290543 Marionette DEBUG Register listener.js for window
4294967297
1524422291404 geckodriver INFO geckodriver 0.20.1
1524422291444 geckodriver INFO Listening on 127.0.0.1:37977
1524422291888 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.TDpwyZXqxyTB"
1524422293344 Marionette INFO Enabled via --marionette
[Parent 9756, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422296749 Marionette INFO Listening on port 60160
1524422297189 Marionette DEBUG Register listener.js for window
4294967297
1524422298143 geckodriver INFO geckodriver 0.20.1
1524422298191 geckodriver INFO Listening on 127.0.0.1:32782
1524422298377 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.yBcRA1dKXoGT"
1524422299521 Marionette INFO Enabled via --marionette
[Child 16340, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422302872 Marionette INFO Listening on port 63356
1524422303045 Marionette DEBUG Register listener.js for window
4294967297
1524422303852 geckodriver INFO geckodriver 0.20.1
1524422303895 geckodriver INFO Listening on 127.0.0.1:19586
1524422304228 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.9ev5FY0xc1i7"
1524422305543 Marionette INFO Enabled via --marionette
[GFX1-]: Could not get a DXGI adapter
[GFX1-]: Could not get a DXGI adapter
[Child 14868, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 14868, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422310032 Marionette INFO Listening on port 64844
[GFX1-]: Could not get a DXGI adapter
1524422310604 Marionette DEBUG Register listener.js for window
4294967297
1524422321813 geckodriver INFO geckodriver 0.20.1
1524422321858 geckodriver INFO Listening on 127.0.0.1:26836
1524422322191 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.ibDRBSonhkXz"
1524422323777 Marionette INFO Enabled via --marionette
[GFX1-]: Could not get a DXGI adapter
[GFX1-]: ClientLayerManager::BeginTransaction with IPC channel down. GPU
process may have died.
[Parent 10436, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 16792, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 16792, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[GFX1-]: Could not get a DXGI adapter
1524422327647 Marionette INFO Listening on port 49671
1524422327909 Marionette DEBUG Register listener.js for window
4294967297
[GFX1-]: Could not get a DXGI adapter
1524422328854 geckodriver INFO geckodriver 0.20.1
1524422328899 geckodriver INFO Listening on 127.0.0.1:41041
1524422329094 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.nF37Bcb1rsbM"
1524422330408 Marionette INFO Enabled via --marionette
[Parent 10360, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 12412, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 12412, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422335433 Marionette INFO Listening on port 55596
1524422335714 Marionette DEBUG Register listener.js for window
4294967297
1524422336611 geckodriver INFO geckodriver 0.20.1
1524422336657 geckodriver INFO Listening on 127.0.0.1:44307
1524422337007 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.BZK9Y7YfOaPw"
1524422338399 Marionette INFO Enabled via --marionette
[Child 5860, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 5860, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422348219 Marionette INFO Listening on port 65437
1524422348734 Marionette DEBUG Register listener.js for window
4294967297
1524422350248 geckodriver INFO geckodriver 0.20.1
1524422350322 geckodriver INFO Listening on 127.0.0.1:36341
1524422350716 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.WMfmoDbCDTAT"
1524422353025 Marionette INFO Enabled via --marionette
[Child 10468, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
[Child 10468, Chrome_ChildThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422358314 Marionette INFO Listening on port 56794
1524422358557 Marionette DEBUG Register listener.js for window
4294967297
1524422359719 geckodriver INFO geckodriver 0.20.1
1524422359781 geckodriver INFO Listening on 127.0.0.1:29271
1524422360457 mozrunner::runner INFO Running command: "C:\Program
Files (x86)\Mozilla Firefox\firefox.exe" "-marionette" "-profile"
"C:\Users\My user
name\AppData\Local\Temp\rust_mozprofile.L8VJnzbpCkrK"
1524422362362 Marionette INFO Enabled via --marionette
[Parent 6760, Gecko_IOThread] WARNING: pipe error: 109: file
z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line
346
1524422368470 Marionette INFO Listening on port 54188
1524422368810 Marionette DEBUG Register listener.js for window
4294967297
Tests run: 6, Failures: 0, Errors: 6, Skipped: 0, Time elapsed: 102.379 sec
<<< FAILURE! - in MyTestSuite
mytestfunction(MyTestSuite) Time elapsed: 29.182 sec <<< ERROR!
geb.driver.DriverCreationException: failed to create driver from callback '
script1524422266628441905114$_run_closure1@2643ed03'
at MyTestSuite.mytestfunction(MyTestSuite.groovy:25)
Caused by: org.openqa.selenium.SessionNotCreatedException:
Unable to create new remote session. desired capabilities = Capabilities
[{marionette=true, browserName=firefox, moz:firefoxOptions=
{binary=Optional.empty, args=[], legacy=null, logLevel=null, prefs={},
profile=null}, version=, platform=ANY}], required capabilities =
Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[],
legacy=null, logLevel=null, prefs={}, profile=null}}]
Build info: version: '3.3.1', revision: '5234b325d5', time: '2017-03-10
09:10:29 +0000'
System info: host: 'Hostname', ip: 'xxx.xxx.xx.xx', os.name: 'Windows 7',
os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_144'
Driver info: driver.version: FirefoxDriver
我现在很困惑,因为到目前为止论坛上所有可能的解决方案都不起作用。
这是 GebConfig.groovy 文件:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.os.ExecutableFinder
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
reportsDir = "target/geb-reports"
driver = null
driver = {
System.setProperty("webdriver.gecko.driver", "D:\eclipse-jee-workspace\geb-example-maven\drivers\geckodriver.exe")
DesiredCapabilities capabilities = DesiredCapabilities.firefox()
capabilities.setCapability("marionette", true);
new FirefoxDriver(capabilities)
}
baseUrl = "http://gebish.org"
这是 GebishOrgSpec .groovy 文件
import geb.spock.GebSpec
class GebishOrgSpec extends GebSpec {
def "can get to the current Book of Geb"() {
when:
to GebishOrgHomePage
and:
manualsMenu.open()
then:
manualsMenu.links[0].text().startsWith("current")
when:
manualsMenu.links[0].click()
then:
at TheBookOfGebPage
}
}
这是 GebishOrgHomePage.groovy 文件
import geb.Page
class GebishOrgHomePage extends Page {
static at = { title == "Geb - Very Groovy Browser Automation" }
static content = {
manualsMenu { module(ManualsMenuModule) }
}
}
这里是 ManualsMenuModule.groovy
import geb.Module
class ManualsMenuModule extends Module {
static content = {
toggle { $("div.menu a.manuals") }
linksContainer { $("#manuals-menu") }
links { linksContainer.find("a") }
}
void open() {
toggle.click()
waitFor { !linksContainer.hasClass("animating") }
}
}
这是TheBookOfGebPage.groovy
import geb.Page
class TheBookOfGebPage extends Page {
static at = { title.startsWith("The Book Of Geb") }
}
这是pom
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.gebish.example</groupId>
<artifactId>geb-maven-example</artifactId>
<packaging>jar</packaging>
<version>1</version>
<name>Geb Maven Example</name>
<url>http://gebish.org</url>
<properties>
<gebVersion>1.1.1</gebVersion>
<seleniumVersion>3.3.1</seleniumVersion>
<groovyVersion>2.4.11</groovyVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.gebish</groupId>
<artifactId>geb-spock</artifactId>
<version>${gebVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>${seleniumVersion}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>${seleniumVersion}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-ie-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-ie-driver</artifactId>
<version>${seleniumVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>*Spec.*</include>
</includes>
<systemPropertyVariables>
<geb.build.reportsDir>target/test-reports/geb</geb.build.reportsDir>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>com.rimerosolutions.maven.plugins</groupId>
<artifactId>wrapper-maven-plugin</artifactId>
<version>0.0.4</version>
<configuration>
<mavenVersion>3.3.3</mavenVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.github.webdriverextensions</groupId>
<artifactId>webdriverextensions-maven-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<goals>
<goal>install-drivers</goal>
</goals>
</execution>
</executions>
<configuration>
<drivers>
<driver>
<name>chromedriver</name>
<version>2.36</version>
<platform>windows</platform>
</driver>
<!-- <driver>
<name>chromedriver</name>
<version>2.36</version>
<platform>windows</platform>
</driver>-->
<!-- <driver>
<name>geckodriver</name>
<version>0.14.0</version>
<platform>windows</platform>
</driver>-->
<driver>
<name>geckodriver</name>
<version>0.20.1</version>
<platform>windows</platform>
</driver>
</drivers>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e
settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.github.webdriverextensions
</groupId>
<artifactId>
webdriverextensions-maven-plugin
</artifactId>
<versionRange>
[3.1.1,)
</versionRange>
<goals>
<goal>install-drivers</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.codehaus.gmaven
</groupId>
<artifactId>
gmaven-plugin
</artifactId>
<versionRange>[1.5,)</versionRange>
<goals>
<goal>testCompile</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
`
我在尝试使用 x64 驱动程序时遇到了类似的问题。每个 > 0.14.0 的版本都显示此症状(4 个空浏览器 windows,4 个 geckodriver.exe 实例需要手动终止)。一旦我将我的项目恢复到 0.14.0,即使使用当前的 FF Quantum 59.0.2(64 位),一切都像魅力一样再次运行。
当然,这不是解决方案,而是解决方法。 Geckodriver 是否有相应的票我不知道。我还没看
更新: 我仍在使用 Selenium 3.0.1。也许这就是为什么我不能使用 Geckodriver 的 never 版本,因为在 release page 上它说对于驱动程序版本 0.15 你至少需要 Selenium 3.3。但是正如您所说,您使用的是 Selenium 3.11,这应该不是问题。即使是 Geckodriver 0.19.0 也只需要 Selenium 3.5。但也许您的 Maven 设置存在缺陷,并且以某种方式引入了较旧的 Selenium 版本。你可以检查这个。