在Alert的类里面,涉及到的方法以及方法的作用主要汇总为如下:
text:获取弹出框的文本信息
accept是接受Confirm弹出框
dismiss是拒绝接受Confirm弹出框
send_keys是在Prompt消息对话框里面输入想要输入的内容。
导入相关的库
from selenium.webdriver.common.alert import Alert from selenium import webdriver import time as t
警告框
text:获取弹出框的文本信息。
driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E5%BC%B9%E5%87%BA%E6%A1%86.html') t.sleep(3) driver.find_element_by_xpath('/html/body/div/input').click() t.sleep(3) # Alert类的方法 print(Alert(driver=driver).text) 获取弹出框里的内容 #第二种调用方法 # print(driver.switch_to.alert.text) t.sleep(3) driver.quit()
确认框
accept是接受Confirm弹出框
dismiss是拒绝接受Confirm弹出框
driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E7%A1%AE%E8%AE%A4%E6%A1%86.html') t.sleep(3) driver.find_element_by_xpath('/html/body/center/input').click() driver.switch_to.alert.accept() 点击同意按键 t.sleep(3) #刷新 driver.refresh() driver.find_element_by_xpath('/html/body/center/input').click() driver.switch_to.alert.dismiss() 点击取消 t.sleep(3) driver.quit()
消息对话框
send_keys是在Prompt消息对话框里面输入想要输入的内容
driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html') t.sleep(3) driver.find_element_by_xpath('/html/body/center/input').click() driver.switch_to.alert.send_keys('陈立') driver.switch_to.alert.accept() 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('https://www.baidu.com/') t.sleep(3) #对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) #点击确定 driver.switch_to.alert.accept() 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('https://pan.baidu.com/') t.sleep(3) #短信快捷登录 driver.find_element_by_id('TANGRAM__PSP_4__smsSwitchWrapper').click() #输入手机号 driver.find_element_by_id('TANGRAM__PSP_4__smsPhone').send_keys('15929643373') t.sleep(3) #发送验证码 driver.find_element_by_id('TANGRAM__PSP_4__smsTimer').click() t.sleep(45) #点击登录 driver.find_element_by_id('TANGRAM__PSP_4__smsSubmit').click() t.sleep(15) obj=ActionChains(driver=driver) #获取元素属性 chenli=driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[2]/div[3]/div/div/dd[3]/div[2]/div[1]/a') t.sleep(3) obj.context_click(chenli).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('https://www.baidu.com/') t.sleep(3) obj=ActionChains(driver=driver) driver.find_element_by_id('kw').send_keys('chenli') t.sleep(3) so=driver.find_element_by_id('su') #双击 obj.double_click(so).perform() t.sleep(3) driver.quit()
键盘事件
首先导入Key是库
from selenium.webdriver.common.keys import Keys
键盘我们常用的有:
Keys.BACK_SPACE:回退键(BackSpace)
Keys.TAB:制表键(Tab)
Keys.ENTER:回车键(Enter)
Keys.SHIFT:大小写转换键(Shift)
Keys.CONTROL:Control键(Ctrl)
Keys.ALT:ALT键(Alt)
Keys.ESCAPE:返回键(Esc)
Keys.SPACE:空格键(Space)
Keys.PAGE_UP:翻页键上(Page Up)
Keys.PAGE_DOWN:翻页键下(Page Down)
Keys.END:行尾键(End)
Keys.HOME:行首键(Home)
Keys.LEFT:方向键左(Left)
Keys.UP:方向键上(Up)
Keys.RIGHT:方向键右(Right)
Keys.DOWN:方向键下(Down)
Keys.INSERT:插入键(Insert)
DELETE:删除键(Delete)
NUMPAD0 ~ NUMPAD9:数字键1-9
F1 ~ F12:F1 - F12键
(Keys.CONTROL, ‘a’):组合键Control+a,全选
(Keys.CONTROL, ‘c’):组合键Control+c,复制
(Keys.CONTROL, ‘x’):组合键Control+x,剪切
(Keys.CONTROL, ‘v’):组合键Control+v,粘贴
具体代码实现为:
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time as t '''回车''' driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') so=driver.find_element_by_id('kw') t.sleep(3) so.send_keys('输入法') t.sleep(3) so.send_keys(F5) t.sleep(5) so.send_keys('输入法') t.sleep(5) so.send_keys(Keys.F12) so.send_keys(Keys.CONTROL,'A')#全选 t.sleep(3) so.send_keys(Keys.CONTROL,'C')#复制 t.sleep(3) so.send_keys(Keys.BACKSPACE)#删除 t.sleep(3) so.send_keys(Keys.CONTROL,'V')#粘贴 so.send_keys(Keys.ENTER)#回车 t.sleep(3) driver.quit()
等待:
等待主要分为三类
1、固定等待,也就是使用sleep()方法
2、隐式等待,使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间
3、显式等待,主要指的是程序每隔一段时间执行自定义的程序判断条件,如果判断成立,程序就会继续执行,
那么如果判断失败,就会报TimeOutExpection的异常信息。
生活实际中,经常遇到因为网络原因资源加载比较慢,这时我们就需要在运行过程中等待一定时间。
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') driver.implicitly_wait(10) 最多等待10秒 wait=WebDriverWait(driver=driver,timeout=10).until(method=es.element_to_be_clickable((By.ID,'kw'))) 等待加载完成通过ID 定位到搜索输入框 wait.send_keys('等') t.sleep(3) 固定等待3秒 driver.quit()
元素可见时操作
element_to_be_clickable是元素可见的时候进行操
作,当然相反的是元素不可见那么久无法操作,这个主要指的是资源加载出来进行具体的操作,
具体以百度里的“关于百度”为例,具体代码为:
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') driver.implicitly_wait(10) aboutbaidu=WebDriverWait(driver=driver,timeout=10).until( es.element_to_be_clickable((By.LINK_TEXT,'关于百度'))) t.sleep(3) aboutbaidu.click() 判断存在 并点击 driver.quit()
指定元素的文本位置
这个方法主要应用于错误文本信息的验证,我们首先需要错误文本信息显示出来才能够进行断言的
验证,使用到的方法为:text_to_be_present_in_element,下面我们主要是以sina email为案例来演示
下这部分的具体应用,具体代码如下
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') driver.implicitly_wait(10) #点击登录 driver.find_element_by_link_text('登录').click() divText=WebDriverWait(driver=driver,timeout=10).until( method=es.element_to_be_clickable( (By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]'))) t.sleep(5) assert divText.text=='请输入邮箱名' t.sleep(5) driver.quit()