RobotFramework模拟Chrome的UA(一)

最近对RobotFramework感兴趣,所以在Mac上装了环境玩玩
打开Chrome,Firefox这样的浏览器,介绍多的不能再多,在这里介绍一下如何使用Chrome的user-agent功能,例如这种


RobotFramework模拟Chrome的UA(一)_第1张图片
image

解惑

网上搜到最多的就是这篇文章 :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 ,有问题看官方文档还是比较靠谱的。

你可能感兴趣的:(RobotFramework模拟Chrome的UA(一))