python appium判断一个元素是否存在_Appium Python中for is_displayed()中的Ifelse语句

我正在尝试使用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条件为true时,脚本运行得很好,但是当if条件为false时,会出现找不到元素“wifi”的错误(这是真的,但这就是为什么我需要转到else部分)。在

我怎样才能解决这个问题。提前谢谢。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要识别一个app界面为动态界面还是静态界面,可以通过检测界面上的元素是否在不断地发生变化来进行判断。以下是一个用Python编写的简单脚本,用于检测Android设备上的app界面是否为动态界面: ```python import os import time import cv2 import numpy as np from appium import webdriver from appium.webdriver.common.touch_action import TouchAction from appium.webdriver.common.multi_action import MultiAction # 设置appium连接信息 desired_caps = { 'platformName': 'Android', 'deviceName': 'Android Emulator', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 获取当前屏幕截图 def get_screenshot(): screenshot_file = 'screenshot.png' driver.get_screenshot_as_file(screenshot_file) return cv2.imread(screenshot_file) # 判断两个图像是否相似 def is_similar(image1, image2): # 计算两个图像的直方图 hist1 = cv2.calcHist([image1], [0], None, [256], [0, 256]) hist2 = cv2.calcHist([image2], [0], None, [256], [0, 256]) # 比较两个直方图的相似度 similarity = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL) return similarity > 0.9 # 判断界面是否为动态界面 def is_dynamic_screen(): # 获取当前屏幕截图 current_screen = get_screenshot() # 等待一段时间,再获取一次屏幕截图 time.sleep(1) next_screen = get_screenshot() # 判断两个截图是否相似 is_similar_screens = is_similar(current_screen, next_screen) return not is_similar_screens # 测试 if __name__ == '__main__': if is_dynamic_screen(): print('当前界面是动态界面') else: print('当前界面是静态界面') # 关闭appium连接 driver.quit() ``` 上面的脚本使用了OpenCV库来进行图像处理,并通过比较两个截图的相似度来判断界面是否为动态界面。你可以根据实际情况对脚本进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值