显式等待实用程序
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}\")")))
我正在使用一个通用的显式等待实用程序,它可以在我的测试用例的不同地方使用。以下是我在基础测试下为相同代码编写的代码。我在这里寻找要在 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}\")")))