我正在尝试为Javascript自动化测试选择一个工具。
到目前为止,我使用Java中的Selenium WebDriver与TestNG构建我的测试,但我被要求搜索JavaScript解决方案来编写测试。
当然,我的第一件事就是转移到WebDriverJs - 它应该与我的Java测试类似。
但是,我还找到了另一个框架:WebdriverIO。我找不到任何可以使用WebDriverJs无法实现的WebdriverIO。
请帮助我理解差异,以便为我选择合适的框架。
答案 0 :(得分:27)
" WebdriverJS"是selenium-webdriver的另一个名称,是Selenium团队JSONWire (WebDriver Wire) Protocol的官方Node.JS实现。
"WebdriverIO"是Christian Bromann(SO profile)的JSON Wire Protocol的独立实现,他在Sauce Labs工作,Sauce Labs是一家基于云的跨浏览器测试提供商。 WebdriverIO使用简洁的语法将其较低级别的请求包装到有用的命令中:
client
.url('http://google.com')
.setValue('#q','webdriver')
.click('#btnG')
使用selenium-webdriver的相同测试更复杂:
driver.get('http://www.google.com');
driver.findElement(webdriver.By.id('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.id('btnG')).click();
答案 1 :(得分:2)
WebdriverJS
实际上是WebdriverIO
与节点包格式的测试运行器一起打包的内容。
WebdriverIO将无法完成WebdriverJS所做的任何事情。
您也可以使用WebdriverJS以及Jasmine或Mocha。
当然,WebdriverJS和WebdriverIO中的包装器标签不同,但这并没有改变它们实现Webdriver WIRE协议的方式。
如果您要测试基于AngularJS的应用程序,可以在Protractor中更加简化WebDriver WIRE协议的实现(它再次作为节点包分发)。