yuv*_*uva 5 java selenium automated-tests gradle selenium-webdriver
对于我的 Selenium 测试程序,我一直通过设置系统属性来定义 webdriver 可执行文件的绝对路径。
例如 -
System.setProperty("webdriver.edge.driver",
new File("webdrivers/MicrosoftWebDriver.exe").getAbsolutePath());
System.setProperty("webdriver.chrome.driver",
new File("webdrivers/chromedriver.exe").getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
这种方法完美无缺。但是,对于每个开发环境,我都必须下载 webdriver,将它们放在一个文件夹中,然后通过设置系统属性来引用它们,如上所示。
我不喜欢这种方法,所以我在网上研究了更聪明的方法。然后我在 maven 存储库中找到了一些库,并将它们添加到 build.gradle 文件中。
dependencies {
compile group: 'org.seleniumhq.selenium', name: 'selenium-firefox-driver', version: '3.4.0'
compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '3.4.0'
compile group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.4.0'
compile group: 'org.seleniumhq.selenium', name: 'selenium-safari-driver', version: '3.4.0'
compile group: 'org.seleniumhq.selenium', name: 'selenium-edge-driver', version: '3.4.0'
}
Run Code Online (Sandbox Code Playgroud)
当我添加这些依赖项时,我不应该期望程序神奇地工作,对吗?因为那没有用。
这里有一个存储库,开发人员试图在其中实现我想要为我的项目实现的目标。我尝试了他的方法,但失败了。我的程序无法找到合适的驱动程序。
一个名为WebDriverManager的项目看起来很有吸引力,但仅适用于 Chrome 和 Internet Explorer。我在使用这个库时遇到了 Firefox 和 Opera 的问题,这是我在手动下载驱动程序和设置系统属性方法时没有遇到的问题。
好的,我现在将我的问题分解为两个问题-
1) 如果我像之前展示的那样使用依赖项,我将如何修改我的 build.gradle 文件,以便我不必设置系统属性并以编程方式指向 webdrivers .exe 文件?
2)如果我不使用这些依赖项,我可以让 gradle 来完成为所有浏览器下载 webdrivers 的工作,将它们放在一个文件夹中,并设置所有必需的系统属性吗?
提前致谢。
小智 0
1) 我让 Gradle 将系统属性设置为当前 webdriver 文件的位置。我在测试中需要它们,因此我在测试任务之前设置属性。
test.doFirst{
def classpathRoots = project.sourceSets.test.runtimeClasspath.files
systemProperty 'webdriver.gecko.driver', classpathRoots.find { it.name.startsWith('geckodriver') }
systemProperty 'webdriver.chrome.driver', classpathRoots.find { it.name.startsWith('chromedriver') }
systemProperty 'webdriver.edge.driver', classpathRoots.find { it.name.startsWith('microsoftwebdriver') }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |