RED(robot framework)中使用headless模
2018-05-07 本文已影响288人
gstorm
最近在用RED进行web自动化测试,RED是官方发布的针对python3 robot editor ide,下载地址:
http://nokia.github.io/RED/
因为运行测试时间比较长,随便都几十分钟,中间想做其他事情做不成(页面总是弹出),想寻找一种在后台运行测试的方法,然后就发现了headless模式。
附上代码:
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --headless
Create WebDriver Chrome chrome_options=${options}
其他浏览器类似。
用这个模式运行测试的时候,程序是在后台跑的,就是没有界面,不过失败截图什么的还正常进行。
然后继续深入,尝试打开Chrome的模拟手机H5页面:
${devname} Create Dictionary deviceName=iphone 5/SE
${chromeoptions}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${chromeoptions} add_experimental_option mobileEmulatuion ${devname}
Create WebDriver Chrome chrome_options=${options}
Go To http://www.baidu.com #url
如果要用headless模式时,再加上一句:
Call Method ${chromeoptions} add_argument --headless
好,问题解决了。
不过在使用过程中出现了一个小问题,窗口最大化的问题(因为有的内容浏览器窗口不最大化,元素定位不到),很顺手就写了
Maximize Browser Window
但是发现不管用!!!(我这儿是这样)
然后就上网搜索解决方法,在options中加入argument
--window-size=1920,1080 #可以设置窗口大小
试了试还是不行,一直出错,这个解决不了了,不过有个万能解决方法,用Python,反正解决不了的问题用Python几乎都能解决,将options用python写个关键字封装下:
from selenium import webdriver
class utils:
#web模式
def create_headlesschrome_options(self):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--window-size=1920,1080')
return chrome_options
#H5模式
def create_app_headlesschrome_options(self,deviceName='iPhone 5/SE'):
devname={'deviceName':deviceName}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
#chrome_options.add_argument('--deviceName=iPhone 5/SE')
chrome_options.add_experimental_option('mobileEmulation',devname)
# chrome_options.add_argument('--window-size=1920,1080')
return chrome_options
然后,使用的时候:
${options} utils.Create Headlesschrome Options #web模式
#${options} utils.Create App Headlesschrome Options #H5模式
Create WebDriver Chrome chrome_options=${options}
go to %{nt_url}
好了,解决。