最近对RobotFramework感兴趣,所以在Mac上装了环境玩玩
打开Chrome,Firefox这样的浏览器,介绍多的不能再多,在这里介绍一下如何使用Chrome的user-agent功能,例如这种
解惑
网上搜到最多的就是这篇文章 :stack上的user-agent方法
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 System/ComputerId
Create WebDriver Chrome chrome_options=${options}
Go To http://www.useragentstring.com
按照这方法写了,运行就报错
Calling method 'add_argument' failed: TypeError: add_argument() got an unexpected keyword argument '--user-agent'
我就纳闷了,为什么同样的写法就是不行呢,在网上搜了很久,终于发现了这个问题的根本所在,这样的写法本身没有问题,有问题的是 --user-agent=
这个=
等号,我们想做的是在user-agent
里面找到后面的模拟器,但是直接=,RobotFramework就会直接去查找--user-agent
而不是找模拟器
Question:怎么解决??
Answer:将--user-agent=
写成--user-agent\=
,后面跟上模拟器
亲测有效
至于如何知道自己本机chrome的user agent是什么,自行网上查找,不在这里赘述
进阶
上面只是介绍如何正确启动UA,如果你运行了会发现浏览器的尺寸根本不像手机,那如何有手机浏览器的效果呢,看代码
${device metrics}= Create Dictionary width=${360} height=${640} pixelRatio=${3.0} userAgent=Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19
${mobile emulation}= Create Dictionary deviceMetrics=${device metrics}
${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${chrome options} add_experimental_option mobileEmulation ${mobile emulation}
Create Webdriver Chrome chrome_options=${chrome options}
argument与experimental
在这段代码中,你应该发现add_argument
改成了add_experimental_option
,这两者的区别有兴趣的可以去看Chrome的介绍,这两种我都试过了
1)add_argument
虽然加载了模拟器,但实际的效果与我想要的手机浏览器不一样(点击某个element跳转到相应的手机端页面),这里点了还是跳电脑端的页面
2)add_experimental_option
和我期望的一模一样
Device参数
代码第一行创建的就是模拟器的参数,具体参数是多少看第一张图就知道了,iPhone 6 375 x 667 DPR:2.0
对应的就是名称,宽度,高度,像素比。这些Mobile Emulation都是做了介绍的,看给的例子也发现使用模拟器时应该用add_experimental_option
,有问题看官方文档还是比较靠谱的。