zoukankan      html  css  js  c++  java
  • 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结

    环境:

    • Appium:1.9.1
    • Appium-desktop:1.7.1
    • Xcode:10.0
    • IOS:iPhone5S(10.3.3)
    • Mac:10.13.6

    ①获取手机屏幕size:长、宽

    Appium Appium 1.9 版本 BUG:使用 get_window_size () 方法报错

    解决办法:

    # 修改路径
    .........python3.6.1-pathLibsite-packagesseleniumwebdriver
    emote
    emote_connection.py
    
    # 300行
    # 原代码
    Command.W3C_GET_WINDOW_SIZE:
                    ('GET', '/session/$sessionId/window/size'),
    
    # 替换为
    Command.W3C_GET_WINDOW_SIZE:
                   ('GET','/session/$sessionId/window/$windowHandle/size'),

    解决size报错之后:

    # 获取手机屏幕长和宽
    self.size = self.d.get_window_size()
    
    # 获取宽度一半
    self.half_Width = self.size['width']/2
    
    # 获取长度一半
    self.half_Width = self.size['height']/2

    ②滑动方法:

    参考:《Appium 急急急:Appium1.5.3 有没有针对 iOS 屏幕滑动的新方法,swipe 坐标滑动已经不支持了,求 Python 语言新解决方法

        def do_swipe(self,x1,y1,x2,y2):
            '''
            # 滑动方法
            :return:
            '''
            self.d.execute_script("mobile: dragFromToForDuration",
                                  {"fromX": x1, "fromY": y1, "toX": x2, "toY": y2, "duration": 0.5})

     ②-1:上、下、左、右,滚动方法:

    driver.execute_script('mobile:scroll', {'direction': '参数'}) # 参数:down,up,right,left

    ②-2:另外,如果想模拟滑动轨迹,如手势解锁,可以这样(先make一下:TouchAction

    # 只供参考,但是不适用于python
    final TouchAction gesture = new TouchAction(driver).press(startX, stratY)
         .moveTo(startX, stratY + height)
         .moveTo(startX, stratY + height + height)
         .moveTo(startX + width, stratY + height + height).release();
     gesture.perform();

    ③多个相同元素定位:

    打开地址:http://localhost:8100/inspector

    如图这里会定位出多个相同元素的信息,如果那个appium-desktop定位不出元素,我们就采取这种方式获取属性定位。

    既然找到元素属性了,那如何写代码定位呢?如下:

    # 点击第一个相同元素
    self.d.find_elements_by_name("home arrow news")[0].click()
    
    # 点击第二个相同元素
    self.d.find_elements_by_name("home arrow news")[1].click()
    
    # 点击第三个相同元素
    self.d.find_elements_by_name("home arrow news")[2].click()

    只需要加上【index】角标即可。

    ④隐藏弹出的输入法,因为怎么试都不行,后来采取的定位背景元素,点击背景,这样就可以间接关闭输入法。

    ⑤判断可不可以点击元素:

    参考:《Selenium2+python自动化36-判断元素存在

        def isExist(self,i):
            '''
            # 判断可不可以点击元素
            :param i:
            :return:
            '''
            try:
                print("已选择:[%s]" % i)
                self.d.find_element_by_name(i).click()
                return True
            except:
                return False

    ⑤-1判断元素存不存在:

    exist = self.d.find_element_by_name(i).is_enabled()
    print(exist)
    # True/False

    ⑥常用定位元素方法:

    # class_name定位
    self.d.find_element(By.CLASS_NAME,"XCUIElementTypeTextField")
    
    # accessibility_id定位
    self.d.find_element_by_accessibility_id("login_bg_top")
    
    # name定位
    self.d.find_element_by_name("home btn newtask")
    
    # xpath定位
    self.d.find_element_by_xpath('//XCUIElementTypeStaticText[@name="xxx"]')
    
    # 还有其他的等等定位详情参考附录的文章

    ⑦点击元素

    self.d.find_element_by_name("home btn newtask").click()

    ⑧输入值

    self.d.find_element_by_accessibility_id("请输入内容").send_keys("xxx")

    ⑨断言

    # 获取元素的值进行断言
    text = self.d.find_element_by_accessibility_id("xxx").text
    print(text)
    self.assertEqual(text,"xxx","显示不对!")

    附录:

    其他appium-IOS自动化API写法参考如下:

    Appium Appium Python API 中文版 By-HZJ

    Python + Appium+ IOS自动化测试

    Appium+Python3+iOS定位元素

    appium---appium 常见API

    Github:appium提问题地址

    Appium之主要的元素定位疑点难点

  • 相关阅读:
    MyEclipse 使用快捷键
    修改MyEclipse默认的Servlet和jsp代码模板
    设置MyEclipse开发项目时使用的JDK
    65.广搜练习:细胞数目
    65.广搜练习:细胞数目
    61.新的开始(最小生成树)
    61.新的开始(最小生成树)
    66.广搜练习:最少关卡路
    66.广搜练习:最少关卡路
    64.广搜练习跳马问题
  • 原文地址:https://www.cnblogs.com/Owen-ET/p/9967907.html
Copyright © 2011-2022 走看看