• Appium常用操作之页面中的滑动点击


    经常有些滑动场景,比如:滑动列表找到指定元素,可能该元素并没有在当前页面显示,需要进行滑动至指定位置该元素才显示,那么怎么针对该场景去定位元素操作元素呢?

    问题解决思路:每次滑动一段距离,利用while循环判断该页面是否包含某个元素文本信息,如果有的话就获取该元素信息,没有的话继续滑动

    #获取当前页面所有的布局、元素信息
    pagesource=driver.page_source
    #new_pagesource存放滑动之后的pagesource信息
    new_pagesource=None
    #例如在页面中找“吃个鱼丸”
    while "吃个鱼丸"not in new_pagesource:
        pagesource=driver.page_source
        #向下滚动页面,引用封装好的swipeDown()方法,见https://www.cnblogs.com/123blog/p/12622826.html
        swipeDown(1000)
        new_pagesource=driver.page_source
    #找到吃个鱼丸进行点击
    if pagesource.find("吃个鱼丸")!=-1:
        driver.find_element_by_android_uiautomator("new UiSelector().text("吃个鱼丸")").click()
    

      用上诉的思路能够实现我们的需求,但是代码相对来说比较复杂,我们还有一种解决思路能够提供更快捷的方式。

    问题解决思路:利用UiAutomator中的UiScrollable滚动类来讲元素滚动到可见区域再来操作;

    UiScrollable可以生成一个滚动动作的对象,其最大的作用就是可以实现滚动的查找某个元素,具体用法见官方文档:https://developer.android.google.cn/training/testing/ui-automator#ui-automator-apis

    element=driver.find_element_by_android_uiautomator('new UiScrollable(new Uiselector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textMatches("吃个鱼丸").instance(0))')
    #再对元素进行操作-点击
    element.click()
    

      

  • 相关阅读:
    [LintCode] 最长上升子序列
    [LintCode] 最长公共前缀
    [LintCode] A + B 问题
    [hihoCoder] 拓扑排序·一
    [LintCode] 拓扑排序
    [LintCode] 第k大元素
    [LintCode] 最小路径和
    [LeetCode] Factorial Trailing Zeros
    [LintCode] 尾部的零
    [LeetCode] Length of Last Word
  • 原文地址:https://www.cnblogs.com/123blog/p/12622942.html
Copyright © 2020-2023  润新知