一、验证信息
1、获取title
也就是获取页面标签
通过driver.title调用title信息
2、获取当前的url信息
先进入需要获取url信息的控键页面,通过driner.current_url获取当前url信息
二、控制浏览器
1、刷新页面:driver.refresh()
2、后退到上一次页面:driver.back()
3、前进到上一次页面:driver.forward()
4、截图:
(1)、元素截图
(2)、页面截图
driver.save_screenshot("bb.png")
driver.get_screenshot_as_file("cc.png")
三、设置窗体尺寸
1、窗体最大化:driver.maximize_window()
2、自定义窗口大小:driver.set_window_size(宽,高)
四、动作事件
1、清空输入框内容:clear()
2、输入框输入内容:send.keys()
3、点击控键:cilck()
五、属性值获取方法
1、获取控键尺寸:先定位控键,然后通过.size获取控键尺寸,并赋值给变量名
2、获取文本信息:先定位控键,然后通过.text获取文本信息,并赋值给变量名
3、获取属性值:先定位控键,然后通过.get_attribute(‘属性’)获取属性值,并赋值给变量名
下面这里拿到的是一个商品的链接,拿到这个链接可以使用点击功能直接跳转到商品页面,
这样就不需要去切换界面了。
4、判断控键是否显示出来:先定位控键,然后通过.is_displayed()判断是否显示,并赋值给变量,打印出来的结果是bool类型
六、鼠标事件
1、需要先导入鼠标类名:
from selenium.webdriver.common.action_chains import ActionChains
2、定位鼠标:
首先定位控键并赋值给变量名,然后通过ActionChains(driver)导入driver,通过move_to_element(控键变量名)把鼠标挪到控键上,通过.perform()生效所有动作
展示效果如下:
3、双击控键:
首先定位控键并赋值给变量名,然后通过ActionChains(driver)导入driver,通过double_cilck(控键变量名)双击控键,通过.perform()生效所有动作
七、键盘事件
1、首先导入键盘类名:
from selenium.webdriver.common.keys import keys
注意:键盘操作时不能连续操作,只能一次一次操作如下面这样的就是错误操作
search_input.send_keys(Keys.CONTROL+"C", Keys.CONTROL+"V")
2、键盘输入:
定位控键+.send_keys(“输入内容”)
3、退格(删除一个单元格):
定位控键+.send_keys(Keys,BACK_SPACE)
search_input = driver.find_element(By.ID, "search-input")
search_input.send_keys("手机")
search_input.send_keys(Keys.BACK_SPACE) #将输入的“手机”删除掉最后一个字“机”
4、输入空格:
定位控键+.send_keys(Keys,SPACE)
search_input = driver.find_element(By.ID, "search-input")
search_input.send_keys("手机")
search_input.send_keys(Keys.SPACE, "测试") #在输入空格后在输入“测试”
5、全选、复制、粘贴、剪切:
定位控键+.send_keys(Keys,CONTROL,‘a’)
A: 全选
X: 剪切
C: 复制
V: 粘贴
search_input = driver.find_element(By.ID, "search-input")
search_input.send_keys("手机")
search_input.send_keys(Keys.CONTROL, "a") #全选
time.sleep(2)
search_input.send_keys(Keys.CONTROL, "c") #复制
search_input.click()
time.sleep(2)
search_input.send_keys(Keys.CONTROL, "V")#粘贴
八、三种等待时间
1、强制等待时间:time.sleep(n) n单位为秒,数值
先导入time类名:import time(from time import sleep)
必须把设置时间等完才会往下执行
2、隐式等待时间:driver.implicitly_wait(n) n单位为秒,数值
表示最大等待为设置的时间,在设置时间内加载出来就直接往下执行,不需要把设置时间等完,如设置时间内没加载出来就会报错
3、显式等待时间:WebDriverWait
需要先导入WebDriverWait、By、EC三个类名:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
ele = WebDriverWait(driver,15,0.5).until(EC.presence_of_element_located(
(By.XPATH,"//div[@class='schbox']/form/input[1]")))
最大等待15秒,每隔0.5秒检测一次,直到当前界面存在了定位的控键
九、多窗口切换
1、获取当前所有的窗体信息:
print(driver.window_handles)
2、获取当前窗体焦点信息:
(查看定位在哪个窗口里面)
print (driver.current_window_handle)
3、切换窗体焦点信息:
#切换到第二个窗口
driver.switch to.window(driver.window handles[1])
windows = driver.window_handles
driver.switch_to.window(windows[-1])#切换到最后一个窗口
4、关闭你当前焦点所在的窗体:
driver.close()
5、关闭所有窗体:
driver.quit()
十、alert处理(弹窗)
1、三种形态
(1)有一个text信息和一个确定按钮
(2)有text信息和取消以及确定按钮
(3)有个text信息和一个输入框,输入框输入信息后显示取消和确定按钮
2、获取文本信息
driver.switch_to.alert.text
3、点击确定/取消按钮
"""
1、driver.switch_to.alert.accept() 确定
2、driver.switch_to.alert.dismiss() 取消
"""
十一、iframe处理(存在多个html和iframe)
1、方式一:如果iframe有 id 或者 有name,并且它们的属性值不为空,并且不是变化的,通过这个方法切到iframe里面
#frame1可以是id可以是name
driver.switch_to.frame("frame1")
2、第二种方式(通用方式):通过xpath先定位到iframe,在切到iframe
fre = driver.find_element(By.XPATH, "//*[@id='frame1']")
driver.switch_to.frame(fre)
3、从子iframe切回到父级frame
(父子级关系需要一层一层切)
#每次只切出一层
driver.switch_to.parent_frame()
4、切回主文档(切回根节点)
driver.switch_to.default_content()
5、面试题:我们定位控件有哪些情况定位不到
(1)等待时间不够
(2)写的定位方式不对
(3)多窗口
(4)存在iframe情况