Я пытаюсь автоматизировать мобильное тестирование с помощью Appium и Python. Мне нужно проверить, отображается ли элемент, и выполнить некоторые действия, а также выполнить некоторые другие действия, если элемент не отображается. Мой сценарий приведен ниже;
wifi = self.driver.find_element_by_xpath('//*[contains(@class,"android.widget.TextView") and contains(@text, "WLAN")]')
if wifi.is_displayed():
print 'Wifi is switched off'
mobiledata = self.driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "Mobile data")]')
mobiledata.click()
print 'SUCCESS! Switch on Mobile data'
else:
print 'Wifi is switched on'
wifi_off = self.driver.find_element_by_xpath('//*[contains(@class,"android.view.ImageView") and contains(@index, "0")]')
wifi_off.click()
print 'SUCCESS! Switch off Wifi'
mobiledata = self.driver.find_element_by_xpath('//android.widget.TextView[contains(@text, "Mobile data")]')
mobiledata.click()
print 'SUCCESS! Switch on Mobile data'
Теперь проблема, с которой я столкнулся, заключается в том, что когда условие if истинно, скрипт работает хорошо, но когда оно ложно, он дает ошибку, что элемент "wifi" не может быть найден (что верно, но поэтому мне нужно перейти к другой части.
Как я могу исправить эту проблему. Заранее спасибо.






Существует разница между тем, существует ли элемент и отображается ли элемент - когда элемент не найден, driver.find_element_by_xxx выдает исключение.
Если вы хотите проверить, существует ли элемент, лучше выполнить driver.find_elements_by_xxx, поскольку он вернет пустой список, а не выдаст исключение, если ни один элемент не соответствует критериям поиска.
Таким образом, вы можете изменить свой код на что-то вроде:
elements = self.driver.find_elements_by_xpath(blah)
wifi = None if len(elements) == 0 else elements[0]
if wifi and wifi.is_displayed():
blah
else:
blah