alert

在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()

 


 


posted @ 2021-12-04 12:00  晨^O^黎  阅读(521)  评论(0编辑  收藏  举报