Appium |机器人框架|无法使用自定义定位器策略运行关键字来查找元素

问题描述 投票:0回答:1

我正在使用Robot Framework和Appium来自动化Android本机应用程序。我们已移至espresso驱动程序以运行这些测试,并且需要使用视图标签定位器来识别元素。但是,Appium Robot库不支持此定位器策略。我在下面编写了自定义关键字

from robot.libraries.BuiltIn import BuiltIn
from robot.api.deco import keyword


@keyword(name='Find by ViewTag')
def by_viewtag(tagname):
    """Provides support to find elements using view tag for Espresso driver on Android"""
    appiumlib = BuiltIn().get_library_instance('AppiumLibrary')
    driver = appiumlib._current_application()
    el = driver.find_element_by_android_viewtag(tagname)
    print(el)
    return el

并且我正在页面文件中使用它来找到这样的对象:

*** Settings ***
Library  ../../../../Resources/Utils/find_elements_utils.py
Library  BuiltIn
Library  AppiumLibrary
Resource  ../../../../Resources/Utils/helpers.robot

*** Variables ***
${loginBtn} =               id=btn_sign_in
${signUpEmail}=  Call Method  Find by ViewTag

但是,运行它会引发以下错误

Element locator 'Call Method Find by ViewTag' did not match any elements after 20 seconds

当我尝试调用关键字来查找定位器时,机器人框架认为我正在传递元素定位器。有人可以帮我吗?我需要编写任何其他功能来实现此功能吗?

请帮助!

python python-3.x appium robotframework appium-android
1个回答
0
投票

*** Variables ***表只能定义静态字符串,不能调用其他关键字。您将${signUpEmail}定义为文字字符串"Call Method Find by ViewTag"(减去引号)。无论您在哪里使用它,完整的字符串都将传递给关键字。

如果要调用Find by ViewTag关键字,则不需要使用Call Method。这是一个普通的关键字,因此您可以以常规方式调用它。例如:

${result}=  Find By ViewTag  a_view_tag
© www.soinside.com 2019 - 2024. All rights reserved.