Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for中的If-else语句在Appium Python中显示为_Python_Xpath_Appium - Fatal编程技术网

for中的If-else语句在Appium Python中显示为

for中的If-else语句在Appium Python中显示为,python,xpath,appium,Python,Xpath,Appium,我正在尝试使用Appium和Python自动化移动测试。我需要检查是否显示某个元素,如果该元素未显示,则执行一些操作,并执行另一些操作。我的剧本如下 wifi = self.driver.find_element_by_xpath('//*[contains(@class,"android.widget.TextView") and contains(@text, "WLAN")]') if wifi.is_displayed(): print '

我正在尝试使用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'
现在我面临的问题是,如果条件为true,脚本运行良好,但如果条件为false,则会出现错误,即无法找到元素wifi,这是true,但这就是为什么我需要转到else部分


如何解决此问题。提前感谢。

元素是否存在与是否显示元素之间存在差异-当找不到元素时,驱动程序将引发异常。查找元素由\u xxx引发

如果要检查某个元素是否存在,最好执行driver.find\u elements\u by\u 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