APP移动端自动化测试(五)Appium截图、等待、HTML报告

1.元素等待

2.截图

等待元素和截图 

from appium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from appium.webdriver.common.touch_action import TouchAction

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "127.0.0.1:62001"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = ".Settings"
caps["notReset"]=True

driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
driver.implicitly_wait(10)

driver.get_screenshot_as_file('scrennshot1.png')
driver.save_screenshot('scrennshot2.png')
def get_size():
	x=driver.get_window_size()['width']
	y=driver.get_window_size()['height']
	return x,y

def swipeUP():
	size = get_size()
	x=int(size[0]*0.5)
	y1 = int(size[1] * 0.9)
	y2 = int(size[1] * 0.3)
	driver.swipe(x,y1,x,y2,1000)


while True:
	try:
		# 定位安全
		ele=driver.find_element_by_xpath('//android.widget.TextView[@text=\"安全\"]')
	except:
		# 向上滑屏找到‘安全’
		swipeUP()
	else:
		sleep(2)
		ele.click()
		break
# 点击图案,进入九宫格界面
ele=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'android:id/summary')))
ele.click()
sleep(2)
x,y=get_size()
TouchAction(driver).press(x=x*0.16,y=y*0.35).wait(1000)\
	.move_to(x=x*0.5,y=y*0.35).wait(1000)\
	.move_to(x=x*0.8,y=y*0.53).wait(1000)\
	.move_to(x=x*0.8,y=y*0.72).wait(1000).release().perform()

3.报告

将下边的文件放入Python环境的lib文件夹下

from appium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from appium.webdriver.common.touch_action import TouchAction
from HTMLTestRunnerCN import HTMLTestRunner
import unittest
import warnings


class TestSettings(unittest.TestCase):
    def setUp(self):
        # 忽略警告
        warnings.simplefilter("ignore", ResourceWarning)
        caps = {}
        caps["platformName"] = "Android"
        caps["platformVersion"] = "5.1.1"
        caps["deviceName"] = "127.0.0.1:62001"
        caps["appPackage"] = "com.android.settings"
        caps["appActivity"] = ".Settings"
        caps["notReset"] = True
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
        self.driver.implicitly_wait(10)

    def test_settings(self):
        def get_size():
            x = self.driver.get_window_size()['width']
            y = self.driver.get_window_size()['height']
            return x, y

        def swipeUP():
            size = get_size()
            x = int(size[0] * 0.5)
            y1 = int(size[1] * 0.9)
            y2 = int(size[1] * 0.3)
            self.driver.swipe(x, y1, x, y2, 1000)

        while True:
            try:
                # 定位安全
                ele = self.driver.find_element_by_xpath('//android.widget.TextView[@text=\"安全\"]')
            except:
                # 向上滑屏找到‘安全’
                swipeUP()
            else:
                sleep(2)
                ele.click()
                break
        # 点击图案,进入九宫格界面
        ele = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, 'android:id/summary')))
        ele.click()
        sleep(2)
        ele1= self.driver.find_element_by_xpath('//android.widget.TextView[@text=\"图案\"]')
        ele1.click()

        sleep(2)
        x, y = get_size()
        TouchAction(self.driver).press(x=x * 0.16, y=y * 0.35).wait(1000) \
            .move_to(x=x * 0.5, y=y * 0.35).wait(1000) \
            .move_to(x=x * 0.8, y=y * 0.53).wait(1000) \
            .move_to(x=x * 0.8, y=y * 0.72).wait(1000).release().perform()

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    # unittest.main()
    suite = unittest.TestSuite()
    suite.addTest(TestSettings("test_settings"))

    fp = open('report.html', 'wb')
    runner = HTMLTestRunner(stream=fp, title="测试报告", description='测试用例执行结果')
    runner.run(suite)
    fp.close()

 


版权声明:本文为qq_27251475原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。