使用Selenium RemoteWebDriver自动测试

记得三年前用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

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

Close Bitnami banner
Bitnami