UI自动化总结-0419
1、实现多浏览器启动
1 def startup(url, driver_name='Chrome'): 2 if driver_name in ("Chrome", "chrome", "CHROME"): 3 self.driver = webdriver.Chrome() 4 # chromepath = "./Browser/chromedriver" 5 # self.driver = webdriver.Chrome(executable_path=chromepath) 6 elif driver_name in ("Firefox", "firefox", "FIREFOX"): 7 self.driver = webdriver.Firefox() 8 # firefoxpath = "./Browser/geckodriver" 9 # self.driver = webdriver.Firefox(executable_path=firefoxpath) 10 else: 11 if driver_name in ("Edge", "edge", "EDGE"): 12 self.driver = webdriver.Edge() 13 elif driver_name in ("Ie", "ie", "IE"): 14 self.driver = webdriver.Ie() 15 else: 16 self.driver = webdriver.Safari() 17 self.driver.set_page_load_timeout(10) 18 while True: 19 self.driver.get(url) 20 self.driver.maximize_window() 21 break 22 else: 23 pass
2、实现页面截图
1 def screenshots(image='名称-' + str(time.time()).replace('.', '') + '.png'): 2 if not os.path.exists('../Image'): 3 os.makedirs('../Image') 4 image_name = os.path.join('../Image', image) 5 # if not os.path.exists('./Images'): 6 # os.makedirs('./Images') 7 # image_name = os.path.join('./Images', image) 8 try: 9 self.driver.get_screenshot_as_file(image_name) 10 testlog.info('截图保存成功' + "-" * 20 + ">" * 2 + " %s", image_name) 11 except Exception as e: 12 testlog.info('截图保存失败' + "-" * 20 + ">" * 2 + " %s", e)
3、页面元素等待
强制等待
driver.find_element_by_xpath("//img[@src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABJCAYAAACqyKH+AAABoklEQVR4Ae3cJZSVQQBH8cEh4g79kJB+SLj2sL0QqUjFvo4mEq4Nh4Q7VNwWyroMN8wrz33t/s/5rba7LjPBjdE555xzbue2bfnmYg+u4RsGECeogdTgWmoyt1zAmTiIHkQV1ZMazcwPOB9PDFS1J5ifCzgF9xDz9OIeTiCboE6kBr2Iee5hSuBBR94r+rEfcxAgWqQm/XmtOgIPHiImQ9hssJI2p0YxeRDy3j2vIKisK4hJb8h7l8wQVFaGmGNAAxrQgE1jQAO+xZmy9LZcwOrJgAYchQGfIZSlZwY0YEsY0IAGNGA3npelbr8P9Bvp0RvwF56XpV/+OsvfBxrQgOOAAQ1oQAMa0IAGXIZ7WI9Qpd24Df5vz4BL8Q/d2IVQxmTsxRA+w4DJOnxHxFmsynv9FGzEI0S8xEoEGDBZjPOIyUfcxG38QkQ/DmOWnwNLW4MMz/ATX/AQ+7HcLyKjnwENaEADyoAGNKABZUADjvKADZ7W9LRmg+eFPS/c4Il1T6w3eGeCdyY0cGuHt3Y0cG+M98Y0cHORNxeNgznnnHPO/Qebj0g868LslgAAAABJRU5ErkJggg==']").click()
time.sleep()
driver.find_element_by_xpath("//a[@href='/valuecard/buycard/page']").click()
time.sleep()
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div/div[2]/div/div[2]/div/div[3]").click()
time.sleep()
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div/div[2]/div/div[6]/div[2]/div[3]").click()
time.sleep()
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div/div/div/div[2]").click()
time.sleep()
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div[2]/div[5]/button").click()
time.sleep()
driver.find_element_by_xpath("//*[@id=\"error\"]/div/div[2]/div[3]/a").click()
隐式等待
driver.find_element_by_xpath("//img[@src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABJCAYAAACqyKH+AAABoklEQVR4Ae3cJZSVQQBH8cEh4g79kJB+SLj2sL0QqUjFvo4mEq4Nh4Q7VNwWyroMN8wrz33t/s/5rba7LjPBjdE555xzbue2bfnmYg+u4RsGECeogdTgWmoyt1zAmTiIHkQV1ZMazcwPOB9PDFS1J5ifCzgF9xDz9OIeTiCboE6kBr2Iee5hSuBBR94r+rEfcxAgWqQm/XmtOgIPHiImQ9hssJI2p0YxeRDy3j2vIKisK4hJb8h7l8wQVFaGmGNAAxrQgE1jQAO+xZmy9LZcwOrJgAYchQGfIZSlZwY0YEsY0IAGNGA3npelbr8P9Bvp0RvwF56XpV/+OsvfBxrQgOOAAQ1oQAMa0IAGXIZ7WI9Qpd24Df5vz4BL8Q/d2IVQxmTsxRA+w4DJOnxHxFmsynv9FGzEI0S8xEoEGDBZjPOIyUfcxG38QkQ/DmOWnwNLW4MMz/ATX/AQ+7HcLyKjnwENaEADyoAGNKABZUADjvKADZ7W9LRmg+eFPS/c4Il1T6w3eGeCdyY0cGuHt3Y0cG+M98Y0cHORNxeNgznnnHPO/Qebj0g868LslgAAAABJRU5ErkJggg==']").click()
driver.implicitly_wait(10)
driver.find_element_by_xpath("//a[@href='/valuecard/recharge/chargepage']").click()
driver.implicitly_wait(10)
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div/div/div[2]/a/button").click()
driver.implicitly_wait(10)
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div/div/div[2]/a/div").click()
driver.implicitly_wait(10)
driver.find_element_by_xpath("//input[@type='number']").send_keys("100")
driver.implicitly_wait(10)
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div/div[3]/div[2]/button").click()
driver.implicitly_wait(10)
driver.find_element_by_xpath("//*[@id=\"root\"]/div/div/div/div[2]/div[5]/button").click()
driver.implicitly_wait(10)
driver.find_element_by_xpath("//*[@id=\"error\"]/div/div[2]/div[3]/a").click()
显示等待
wode = WebDriverWait(self.driver, 10).until(lambda driver: self.driver.find_element_by_xpath("//*@id=\"root\"]/div/div/div[2]/div/div[2]/div[4]"))
wode.click() #此方法用于类
wode = WebDriverWait(driver, 10).until(lambda driver: self.driver.find_element_by_xpath("//*@id=\"root\"]/div/div/div[2]/div/div[2]/div[4]"))
wode.click() #此方法用于函数式
4、处理滚动条
方法1:
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);") #执行效果差,出现失败的情况最多的一种
方法2:
zchy=self.driver.find_element_by_xpath("//*@id=\"root\"]/div/div/div/div/div/div[2]/div/div/div/button")
driver.execute_script("arguments[0].click();", zchy) #没有智能等待,但最适用
方法3:
wode = WebDriverWait(self.driver, 10).until(lambda driver: self.driver.find_element_by_xpath("//*@id=\"root\"]/div/div/div[2]/div/div[2]/div[4]"))
wode.click() #有等待时间,只有元素加载完成才会执行下步操作
5、短信验证码处理
1 方法1: 2 data=self.driver.find_element_by_xpath('//div[@class="weui-toptips weui-toptips_primary"]').text 3 self.driver.find_element_by_xpath("//input[@type='number']").send_keys(data) #最直接、最简单的方式,但能运用到的环境太少 4 方法2: 5 通过键盘的Ctrl+c和Ctrl+v,但实现起来过于复杂且实用性较差,不到万不得已不使用 6 方法3: 7 半自动化,适用于正式环境。查询短信,将验证码手动输入一下,效率较低,且程序的等待时间过长

浙公网安备 33010602011771号