1. selenium自动化怎么测试web界面中图表数据正确性
我也遇到类似的问题。对于类似echart插件绘制的图表,selenium无法定位到其中具体元素(至少目前我没找到方法),所以要是测功能的话只得手工去点了(比如单击跳转),如果是测数据,大可不必用selenium,可以考虑通过接口【自动化】测试
2. [Selenium自动化测试实战] 不打开浏览器如何进行WEB自动化测试
在一般的使用场景下,使用selenium进行web自动化测试都需要打开一个浏览器的实体,测试脚本通过控制webdriver来对浏览器进行操作。但是在一些场景下测试工程师需要在不打开浏览器的情况下进行自动化测试,也就是以headless的方式运行自动化测试。
业界有一些headless的第三方库可以使用,例如大名鼎鼎的PhantomJS。但是这些工具的安装很复杂,同时不一定保证持续的维护。
现在全球最受欢迎的浏览器Chrome在Chrome 59 (Chrome 60 for Windows)版本中已经支持了headless mode,只需要配置一些简单的参数就可以实现。
首先要确认自己机子上的Chrome版本。
require 'selenium-webdriver'
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--remote-debugging-port=9222')
driver = Selenium::WebDriver.for :chrome, options: options
driver.get "https://www.jd.com"
driver.save_screenshot("#{File.dirname(__FILE__)}/#{Time.now.strftime("%F")}")
通过在Selenium::WebDriver::Chrome::Options类的对象中添加argumentoptions.add_argument('--headless'),可以让我们在Chrome在headless模式下运行。
而第二个argument的作用是针对现有bug的work around。第三个argument的作用则是允许我们可以在另外一个浏览器中debug。
为了观测运行的情况,我保存了一个屏幕截图。
相比于之前的headless web自动化方案,Chrome的优势在于设置的方便,甚至可以和当前的框架无缝切换,同时Chrome作为最为主流的浏览器,你也不用担心持续维护的问题。