小测试-小测试 2024-06-13 10:27 采纳率: 0%
浏览 21

Python+appium:如何定位带链接的文字,并点击

Python+appium:如何定位带链接的文字,并点击
Textview 控件里面有2端文字设置了不同的超链接. 请问该如何定位并点击? (需要考虑兼容性测试, 不同设备上的点击操作, 不能固定坐标点击),使用的是python语言

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 10:27
    关注

    引自免费微信小程序:皆我百晓生

    要使用Appium和Python定位带有链接的TextView控件并点击其中的特定链接,可以通过XPath表达式结合text()函数和正则表达式来实现。由于链接通常包含在文本中的特定部分,我们可以查找包含整个链接文本的节点。

    下面是一个示例代码,展示了如何找到并点击包含特定链接(例如“《隐私政策》”)的TextView:

    from appium import webdriver
    import time
    
    desired_caps = {
        'platformName': 'Android',
        'deviceName': 'YourDeviceName',
        'appPackage': 'YourAppName',
        'appActivity': 'YourAppActivity',
        'automationName': 'UiAutomator2'
    }
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    # 定位并点击链接 "《隐私政策》"
    try:
        link_element = driver.find_element_by_android_uiautomator(
            'new UiSelector().resourceId("com.example.app:id/link_privacy_policy")')
        # 或者使用XPath,如果资源ID不可用
        # link_element = driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "《隐私政策》")]')
        link_element.click()
    except Exception as e:
        print("Error occurred while trying to click the link:", e)
    finally:
        time.sleep(5)
        driver.quit()
    

    注意,在上述代码中,我们尝试了两种方法来定位链接:

    1. 使用find_element_by_android_uiautomator通过资源ID定位。这通常是更稳定的方法,但需要你有资源ID的信息。
    2. 如果资源ID未知,可以使用XPath通过部分文本匹配来定位元素。这里我们使用了contains()函数来匹配包含特定文本的节点。

    如果TextView中的链接是动态生成的,或者链接文本可能变化,你可能需要调整XPath表达式或使用更复杂的正则表达式来确保正确匹配。

    此外,对于兼容性测试,确保你的测试覆盖不同屏幕尺寸和分辨率的设备。这通常涉及到使用相对布局和灵活的定位策略,而不是依赖于绝对坐标。在上面的示例中,我们没有使用坐标,而是基于元素的属性进行定位,这有助于提高跨设备的兼容性。

    如果你需要进一步的帮助或有更具体的需求,请提供更多的细节,包括你的应用UI的具体结构和你遇到的任何具体问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月13日

悬赏问题

  • ¥15 为什么提交不了?接口测试都是对的
  • ¥15 有可能用平板通过拓展坞来烧录程序吗(keil5的那种)
  • ¥15 网络分析设施点无法识别
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决
  • ¥100 基于SVM的信息粒化时序回归预测,有偿求解!
  • ¥15 物体组批优化问题-数学建模求解答
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用