Каковы некоторые рекомендации при отображении утверждающих элементов iOS? - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь написать свой первый тест автоматизации пользовательского интерфейса для приложения для iOS с Appium / Python.

Я обнаружил, что, когда я перечисляю 10 утверждений, подобных приведенному ниже, я получаю очень противоречивые результаты ...иногда он проходит, но обычно не проходит третье утверждение, иногда не проходит восьмое.

assert driver.find_element_by_name('Settings').is_displayed()

Я также пытался использовать ожидания:

driver.wait_for_element_by_name_to_display('Settings')
assert driver.find_element_by_name('Settings').is_displayed()

Кто-нибудь знает о каких-либохорошие ресурсы по этому вопросу?Любые советы или рекомендации?

Ответы [ 3 ]

1 голос
/ 30 мая 2019

Существует хороший класс утилит, который можно использовать для этого EC. Вот ссылка на документацию git

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

Затем вы можете использовать его для определения наличия элемента:

from appium.webdriver.common.mobileby import MobileBy
# time in seconds
timeout = 10
wait = WebDriverWait(driver, timeout)
wait.until(EC.presence_of_element_located((MobileBy.NAME, 'Settings'))

Если вам нужно обнаружить настоящее и видимое использование:

wait.until(EC.visibility_of_any_elements_located((MobileBy.NAME, 'Settings'))
1 голос
/ 07 мая 2019

Я не знаю кода Python, я показываю, как я делаю это в Java.Надеюсь, вы сможете преобразовать его в код Python.

Создайте метод, подобный следующему:

public boolean isElementDisplayed(MobileElement el){
     try{
        return el.isDisplayed();
     }catch(Exception e){
        return false;
     }
}

Затем вы можете проверить, отображается ли элемент, вызвав указанный выше метод:

MobileElement element = driver.findElementById('element id');
boolean isElementVisible = isElementDisplayed(element);
if(isElementVisible){
   //element is visible
}else{
   //element is not visible
}

Если вы не используете try catch, то исключение будет выдано, если элемент не найден.

0 голосов
/ 09 мая 2019

Вы можете подождать, пока целевой элемент не будет расположен, как показано ниже.

https://github.com/appium/python-client/blob/6cc1e144289ef3ee1d3cbb96ccdc0e687d179cac/test/functional/android/helper/test_helper.py

Пример:

from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

TIMEOUT = 3
WebDriverWait(self.driver, TIMEOUT).until(
    EC.presence_of_element_located((MobileBy.ACCESSIBILITY_ID, 'Text'))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...