Home > Back-end >  Explicit wait utility
Explicit wait utility

Time:02-10

I am using one generic explicit wait utility which can be used in different places in my test case. Following is the code I have written for the same under Base Test. Here I am looking for a text to present in the screen.For that I have given the parameter "text" in the function VerifyTextPresence.

But after running the script, I am having the below error. How to make it generic so that for any text, I can use this utility. For example, here I am checking for the text "Get" to be present in the screen

Utility Code:

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

Test Script:

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

Error:

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

CodePudding user response:

Based on Appium docs

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

UiSelector for text should look like:

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

and in your example:

new UiSelector().text(text)

I see 2 issues here:

  • no quotes for text
  • no reference to python method text arg

also

  • element = (...).text will put the text value to element, and looks not helpful.

Try this:

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