zoukankan      html  css  js  c++  java
  • Appium自动化WebView中元素的操作

    在App开发过程中,很容易用到第三方的WebView控件,这个属于移动端混合型App。在我们做自动化测试的过程中,就要对这种情况进行处理,最通用的办法就是先将appium切换到webview模式然后按查找web元素的方法对WebView里面的元素进行操作即可。具体实施方法,可以参考:http://www.tuicool.com/articles/bIBRZze

    可是也有很多情况,如新浪微博第三方授权登录页面(如图一),这个嵌入到App中的第三方WebView,在查上下文信息的时候,找不到对应的WebView。

    Appium自动化WebView中元素的操作

     

    图一:网易新闻客户端新浪微博授权

    查找当前可用的上下文信息的时候,用如下代码:

    contexts=self.driver.contexts

            for cotext in contexts:

                print cotext

    根据输出的信息,如果有WebView信息的时候,可以切换:

    driver.switch_to.context("WEBVIEW")

    或是 driver.context(“WEBVIEW”)

       但是一直找不到WebView信息,如图二所示,此时就没有办法进行切换。

    Appium自动化WebView中元素的操作

    图二,获取上下文信息的显示结果

    于是尝试了各种办法,都没有实现。最后只好用以下最笨的办法了,模拟点击屏幕:

    def test_login(self):

           #单击网易新闻客户端的登录按钮

            time.sleep(10)      

            lgin=self.driver.find_element_by_id("com.netease.newsreader.activity:id/login_icon")

            lgin.click()

            time.sleep(2)       lgbt=self.driver.find_element_by_id("com.netease.newsreader.activity:id/biz_pc_main_info_profile_avatar")

            lgbt.click()                       

            time.sleep(2)

            #单击新浪微博的登录按钮

    sinalg=self.driver.find_element_by_id("com.netease.newsreader.activity:id/sinaweibo_name")

            sinalg.click()

            #***以下为模拟单击屏幕操作

            time.sleep(3)

            #单击输入用户名:sxf

            self.driver.tap([(150,588),])

            time.sleep(3)       

            self.driver.tap([(230,1516),])

            self.driver.tap([(330,1681),])

            self.driver.tap([(440,1516),])

            #输入密码:123

            self.driver.tap([(212,776),])

            time.sleep(3)

            self.driver.tap([(72,1236),])

            self.driver.tap([(180,1236),])

            self.driver.tap([(263,1236),])

            time.sleep(3)

            #单击登录按钮

            self.driver.tap([(520,912),])

            time.sleep(10)

    上面的模拟单击操作,可以单击输入框调出键盘,然后再去单击键盘上面的按钮,达到输入信息的目的。定位屏幕上面的座标,可以通过网页:http://bbs.anjian.com/thread-519563-1-1.html 上面的方法。

         通过模拟点击键盘操作,可以实现对无法查找到的WebView上面的元素进行操作,可是无法获取上面元素的内容,无法验证操作后的结果。这是一个很大的问题,目前在网上查找了一下,也没有找到好的办法,可能随着appium的发展会有解决办法的。也许有好的办法,我没有找到,后续我会努力找到好的解决办法,到时候再和大家共享。

    原文:http://blog.sina.com.cn/s/blog_68f262210102v92p.html

  • 相关阅读:
    天真的误会
    Unity3D笔记
    http纪要
    JQuery中ajax错误处理之页面跳转
    php代码片段
    3D游戏相关笔记
    Javascript笔记
    PHP对观察者模式的支持
    为什么要使用多线程
    死锁和活锁
  • 原文地址:https://www.cnblogs.com/peachh/p/9740185.html
Copyright © 2011-2022 走看看