1、处理异常
def test_002(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
if self.driver.find_element(AppiumBy.XPATH, ele):
self.driver.find_element(AppiumBy.XPATH, ele).click()
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
2、WebDriverWait 显性等待:lambda 表达式处理
def test_004(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(self.driver, 20).until(lambda x: self.driver.find_element(AppiumBy.XPATH, ele))
self.driver.find_element(AppiumBy.XPATH, ele).click()
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
3、WebDriverWait 显性等待:expected_conditions 处理
def test_003(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
from selenium.webdriver.support import expected_conditions as Ec
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(self.driver, 20).until(Ec.visibility_of_element_located((AppiumBy.XPATH, ele)))
self.driver.find_element(AppiumBy.XPATH, ele).click()
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
4、WebDriverWait 显性等待:自定义方法
def test_005(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
from selenium.webdriver.support.wait import WebDriverWait
def loaded(driver):
print(datetime.now())
if self.driver.find_element(AppiumBy.XPATH, ele):
self.driver.find_element(AppiumBy.XPATH, ele).click()
return True
else:
return False
try:
WebDriverWait(self.driver, 20, 0.2).until(loaded)
except:
print("no updates")
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
5、强制、隐性、显性等待完整代码示例
import time
from datetime import datetime
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
class TestDemo:
def setup(self):
caps = {
"platformName": "android",
"deviceName": "008640dd0804",
"automationName": "uiautomator2",
"appPackage": "com.xueqiu.android",
"appActivity": ".view.WelcomeActivityAlias",
"autoGrantPermissions": "true"
}
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/tv_agree").click()
self.driver.implicitly_wait(10)
def test_001(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
self.driver.find_element(AppiumBy.XPATH, ele).click()
time.sleep(20)
el3 = self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
def test_002(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
if self.driver.find_element(AppiumBy.XPATH, ele):
self.driver.find_element(AppiumBy.XPATH, ele).click()
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
def test_004(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(self.driver, 20).until(lambda x: self.driver.find_element(AppiumBy.XPATH, ele))
self.driver.find_element(AppiumBy.XPATH, ele).click()
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
def test_003(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
from selenium.webdriver.support import expected_conditions as Ec
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(self.driver, 20).until(Ec.visibility_of_element_located((AppiumBy.XPATH, ele)))
self.driver.find_element(AppiumBy.XPATH, ele).click()
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
def test_005(self):
ele = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView"
from selenium.webdriver.support.wait import WebDriverWait
def loaded(driver):
print(datetime.now())
if self.driver.find_element(AppiumBy.XPATH, ele):
self.driver.find_element(AppiumBy.XPATH, ele).click()
return True
else:
return False
try:
WebDriverWait(self.driver, 20, 0.2).until(loaded)
except:
print("no updates")
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/search_input_text").send_keys("alibaba")
def teardown(self):
self.driver.quit()