RobotFramework模拟Chrome的UA(一)

作者: Vera24 | 来源:发表于2017-02-15 13:19 被阅读130次

    最近对RobotFramework感兴趣,所以在Mac上装了环境玩玩
    打开Chrome,Firefox这样的浏览器,介绍多的不能再多,在这里介绍一下如何使用Chrome的user-agent功能,例如这种
    <img src="http:https://img.haomeiwen.com/i1858897/0269be164493f563.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="50%" height="50%">

    解惑

    网上搜到最多的就是这篇文章 :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(一)

        本文链接:https://www.haomeiwen.com/subject/qckqwttx.html