显式等待实用程序

Explicit wait utility

我正在使用一个通用的显式等待实用程序,它可以在我的测试用例的不同地方使用。以下是我在基础测试下为相同代码编写的代码。我在这里寻找要在 screen.For 中显示的文本,我在函数 VerifyTextPresence 中给定了参数“文本”。

但是在 运行 脚本之后,我遇到了以下错误。如何使其通用,以便对于任何文本,我都可以使用此实用程序。例如,我在这里检查屏幕中是否出现文本“Get”

实用代码:

def VerifyTextPresence(self,text):
    wait = WebDriverWait(self.driver, 15)
    element = wait.until(EC.presence_of_element_located((AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text(text)'))).text

测试脚本:

def test_testcasename(self):
        self.VerifyTextPresence("Get")

错误:

io.appium.uiautomator2.common.exceptions.UiSelectorSyntaxException: Could not parse expression `new UiSelector().textGet`: No opening parenthesis after method name at position

基于 Appium 文档

https://appium.io/docs/en/writing-running-appium/android/uiautomator-uiselector/

文本的 UiSelector 应如下所示:

new UiSelector().text("some text value")

在你的例子中:

new UiSelector().text(text)

我在这里看到 2 个问题:

  • 文本没有引号
  • 未引用 python 方法文本 arg

还有

  • element = (...).text 会将文本值放入元素中,看起来没有帮助。

试试这个:

def VerifyTextPresence(self, text):
    WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((AppiumBy.ANDROID_UIAUTOMATOR, f"new UiSelector().text(\"{text}\")")))