12.3
作者:互联网
Alert类实战
在UI的自动化测试实战中,针对弹出框的处理,主要使用的是Alert的类这部分,在JavaScript的技术体系中,针对弹出框的部分,主要涉及到Alert警告框,Confirm确认框,Prompt消息框。下来主要详细的说下Alert里面每个方法的具体使用,具体源码如下:
点击查看代码在Alert的类里面,涉及到的方法以及方法的作用主要汇总为如下:
text:获取弹出框的文本信息
accept是接受Confirm弹出框
dismiss是拒绝接受Confirm弹出框
send_keys是在Prompt消息对话框里面输入想要输入的内容
text:获取弹出框的文本信息
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function func() { alert("我是一个消息框") } </script> </head> <body> <div> <input type="button" onclick="func()" value="显示消息框"> </div> </body> </html>
from selenium.webdriver.common.alert import Alert from selenium import webdriver import time as t driver=webdriver.Chrome() # driver.maximize_window() driver.get('file:///D:/code/testdev/Alert%E5%AE%9E%E6%88%98/alert.html') t.sleep(2) driver.find_element_by_xpath('/html/body/div/input').click() t.sleep(2) # Alert类的方法 # print(Alert(driver=driver).text) # 第二种调用Alert类的方法 print(driver.switch_to.alert.text) t.sleep(2) driver.quit()
消息对话框
<html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function disp_prompt() { var name=prompt("请输入您的姓名:","") if(name!=null && name!="") { document.write("Hello "+name+"!") } } </script> </head> <body> <center> <input type="button" onclick="disp_prompt()" value="请点击我!"> </center> </body> </html>
from selenium import webdriver import time as t driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/Alert%E5%AE%9E%E6%88%98/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html') t.sleep(2) driver.find_element_by_xpath('/html/body/center/input').click() t.sleep(2) driver.switch_to.alert.send_keys('tian') t.sleep(2) driver.switch_to.alert.accept() t.sleep(2) driver.quit()
确认框
<html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> function disp_confirm() { var r=confirm("请您点击按钮!") if(r==true) { document.write("您点击了确认按钮") } else { document.write("您点击了取消按钮") } } </script> </head> <body> <center> <input type="button" onclick="disp_confirm()" value="请点击"> </center> </body> </html>
from selenium.webdriver.common.alert import Alert from selenium import webdriver import time as t driver=webdriver.Chrome() # driver.maximize_window() driver.get('file:///D:/code/testdev/Alert%E5%AE%9E%E6%88%98/%E7%A1%AE%E8%AE%A4%E6%A1%86.html') t.sleep(2) driver.find_element_by_css_selector('body > center > input[type=button]').click() t.sleep(2) driver.switch_to.alert.accept() t.sleep(3) # 刷新 driver.refresh() driver.find_element_by_css_selector('body > center > input[type=button]').click() t.sleep(2) driver.switch_to.alert.dismiss() t.sleep(2) driver.quit()
悬浮
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.sina.com.cn/') t.sleep(3) #获取到移动客户端元素属性 locator=driver.find_element_by_xpath('//*[@id="SI_Top_Wrap"]/div/div/div/div[1]/div[4]/a/i') action=ActionChains(driver=driver) action.move_to_element(locator).perform() t.sleep(5) driver.quit()
双击
from selenium.webdriver.common.action_chains import ActionChains from selenium import webdriver import time as t driver=webdriver.Chrome() # driver.maximize_window() driver.get('https://www.hao123.com/') driver.implicitly_wait(30) t.sleep(5) obj=ActionChains(driver=driver) driver.find_element_by_name('word').send_keys('芜湖') t.sleep(5) so=driver.find_element_by_xpath('//*[@id="search"]/form/div[3]/input') # 双击 obj.double_click(so).perform() t.sleep(3) driver.quit()
鼠标事件
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') t.sleep(2) # 针对ActionChains进行实例化 obj=ActionChains(driver=driver) settings=driver.find_element_by_xpath('//*[@id="s-usersetting-top"]') obj.move_to_element(settings).perform() t.sleep(3) # 点击搜索设置 driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[1]').click() t.sleep(3) # 点击保存设置 driver.find_element_by_xpath('//*[@id="se-setting-7"]/a[2]').click() t.sleep(3) print(driver.switch_to.alert.text) t.sleep(3) # 点击确定后,页面跳转到首页 driver.switch_to.alert.accept() t.sleep(3) driver.quit()
右键
WebDriverWait类实战
在UI的自动化测试中,经常会由于网络加载慢的问题导致资源加载不出来,从而影响测试的效率,之前我们对这样的处理方案是使用了time库里面的sleep()方法来休眠几秒钟,但是这样的方式毕竟不是很好的解决方案。在UI自动化测试中,关于等待的部分,主要汇总为如下三点,具体如下:
1、固定等待,也就是使用sleep()方法
2、隐式等待,使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间
3、显式等待,主要指的是程序每隔一段时间执行自定义的程序判断条件,如果判断成立,程序就会继续执行,那么如果判断失败,就会TimeOutExpection的异常信息。
隐式等待
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as es import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.hao123.com') driver.implicitly_wait(30) wait=WebDriverWait(driver=driver,timeout=10).until(method=es.element_to_be_clickable((By.NAME,'word'))) wait.send_keys('hh') t.sleep(3) driver.quit()
标签:webdriver,selenium,driver,element,12.3,sleep,import 来源: https://www.cnblogs.com/gapfupeng/p/15639908.html