记得三年前用Selenium写过自动测试,只不过当时用的LocalWebDriver,必须要在本地先安装浏览器(WebDriver)才可以。
最近一个偶然的机会,要做一个爬虫网站的评估,所以就重新调查了一下。意外的发现原来有RemoteWebDriver这么便利的东西。
通过搭建一个RemoteWebDriver,就可以替代本地的WebDriver,而且,搭建RemoteWebDriver也是异常的简单。
搭建RemoteWebDriver主要有两种方法:
# 方法1: 直接运行selenium remote web driver的docker
docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.141.59-xenon
# 方法2: 下载standalone的jar包,在本地运行jar文件
java -jar selenium-server-standalone-{VERSION}.jar
搭建好了RemoteWebDriver服务器以后,怎么连接进行测试了,下面有一段示例代码:
RemoteWebDriver(URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome()).run {
// 打开LoginUrl
this.get(loginUrl)
// 输入账号密码
this.findElement(By.name("username")).sendKeys(username)
this.findElement(By.name("password")).sendKeys(password)
// 点击登陆按钮
this.findElement(By.name("commit")).click()
// 打开登陆后的URL
this.get(urlAfterLogin)
this.findElement(By.id("message_body")).sendKeys("Hello World")
// 上传文件
File("uploadFile.txt").let { file ->
findElement(By.id("message_attachements_attributes_file")).let {
(it as RemoteWebElement).setFileDetector(LocalFileDetector())
it.sendKeys(file.absolutePath)
// 确认html要素内容
log.info("${it.getAttribute("innerHTML")}")
}
}
// 保存截图
this.getScreenshotAs(OutputType.FILE).let {
FileCopyUtils.copy(it, File("evidence.png"))
}
// 记得关闭driver哦
this.quit()
}
参考文章:
https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a