RobotFrameWork实现模拟手机打开谷歌,浏览手机网页

一、背景

做ui自动化时,需要测试手机类型的网页。Chrome是可以使用F12,打开控制台,模拟手机模式打开网页的。然后有这个需求,便想使用robot一块做了。

二、方法尝试:

  • 使用robot的模拟按键,操作按下F12,快捷键:ctrl+shift+I、ctrl+shift+M,发现模拟按键操作在输入框中生效了,并没有实际按下的效果。
  • 使用关键字Open Context Menu,打开菜单(目前没找到点击菜单中选项的方法),进入控制台后,点击控制台中的元素进入手机浏览模式,发现根本点击不到。
  • 最后想了下打开浏览器的时候直接进入手机浏览模式,搜了一下还真有,参考代码链接https://blog.csdn.net/huilan_same/article/details/52856200 该方法通过python打开,java也是可以的。但是我现在用robot框架写的自动化,需要导入自定义库,自定义关键字才可以。导入自定义库方法参考https://blog.csdn.net/qq_45731111/article/details/104536573

三、遇到的问题

  • 代码导入自定义库后,使用封装的关键字可以成功的使用手机浏览模式打开Chrome,但是无法进行下一步操作,页面直接关闭了。 并且我没有添加close browser的关键词。以下是我导入自定义库的代码,当时想得太简单了。
    导入方法
  • 验证后发现是设置自定义库的问题,因为是直接把代码放进去了,虽然可以直接引用,但是没有增加返回值,不能把当前driver的状态return出来,让后面的操作继续当前状态的driver继续操作,导致自己封装后,打开网页后自动关闭的情况。,为此需要return这个driver
  • 后来看了一下关键词open browser的源代码,这里为了方便截图,把一些描述信息删除了。可以看到源码里面是有返回return driver的,这个类也需要输入一个入参,这个入参也是官方写好的代码,为了简单实现我们的目的,直接在源码中添加我们的方法。
    openbrowser

四、解决

直接模仿关键词open browser,源码关键字的存在路径(我的是):

D:\python\Lib\site-packages\SeleniumLibrary\keywords

文件夹下的browsermanagement.py文件。把以下代码粘贴到这个文件里面去,建议放在open browser的下面,以后容易找到。使用时方法举例:如下图。注意机型的大小写。

  • pass:修该代码的时候建议使用python编译器。调试过程出现错误,通过查看报错应该很好解决。

lizi

@keyword	
    def open_browser_mobile(self, url, mobilePhone, alias=None,
                     remote_url=False, desired_capabilities=None,
                     ff_profile_dir=None):
        """Opens a new browser instance to the given ``url`` and ``model``.

        Examples:
        | `Open Browser` | http://example.com | iPhone X  |
        """
        try:
            mobileEmulation = {'deviceName': mobilePhone}
            options = webdriver.ChromeOptions()
            options.add_experimental_option('mobileEmulation', mobileEmulation)
            driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=options)
            driver.get(url)

        except Exception:
            self.ctx.register_driver(driver, alias)
            self.debug("Opened browser with session id %s but failed "
                       "to open url '%s'." % (driver.session_id, url))
            raise
        self.debug('Opened browser with session id %s.' % driver.session_id)
        return self.ctx.register_driver(driver, alias)	

五、使用java代码打开

java代码打开方式,https://blog.csdn.net/qq_45731111/article/details/104707337

发布了17 篇原创文章 · 获赞 9 · 访问量 1850

猜你喜欢

转载自blog.csdn.net/qq_45731111/article/details/104697893
今日推荐