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
View Code

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)
View Code

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 半自动化,适用于正式环境。查询短信,将验证码手动输入一下,效率较低,且程序的等待时间过长
View Code

 

posted @ 2019-04-19 16:25  无为而道  阅读(183)  评论(0)    收藏  举报