webdriverAPI与键鼠操作_byseyOrd
常见的引入
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
import os
浏览器API
创建一个浏览器驱动对象
dr = webdriver.Chrome()
dr = webdriver.FireFox()
访问某个网址
dr.get('https://www.baidu.com')
设置浏览器的宽高
dr.set_window_size(200, 200) # 设置浏览器的宽高为200px
设置浏览器全屏、最小化
dr.maximize_window() # 全屏
dr.minimize_window() # 最小化
网页前进、后退
dr.forward() # 前进
dr.back() # 后退
关闭
dr.close() # 关闭标签页
dr.quit() # 关闭浏览器
页面API
源码
dr.page_source()
标题
dr.title()
title_is() # 用于判断标题是否 xx
title_contains() # 用于判断标题是否包含 xx 信息
url地址
dr.current_url()
元素API
元素.clear() # 清除元素输入框的内容
元素.send_keys('hello') # 在元素输入框中输入hello
元素.click() # 点击某元素按钮
表单元素.submit() # 用于form元素,模拟按下enter键来替代点击操作
元素.size() # 获取元素的尺寸大小
元素.text() # 获取元素的文本内容
元素.get_attribute('name') # 获取元素的name属性值
元素.is_displayed() # 判断元素是否可见,返回布尔值
元素.is_enabled() # 元素是否可操作
元素.is_selected() # 元素是否选中
文件API
截图
dr.get_screenshot_as_file("D:\\baidu.jpg") # 将当前页面可视区截图并存放
dr.get_screenshot_as_png("D:\\baidu.png")
dr.get_screenshot_as_base64("D:\\baidu.png").encode('ascii')
上传文件(引入 os)
file = os.path.abspath('1.jpg') # 相对于该py文件的图片对象
dr.find_element(By.ID, 'upfile2').send_keys(file) # 将图片传入id为upfile2的元素里
鼠标事件(引入ActionChains)
ActionChains(dr).context_click(元素).perform() # 右键
ActionChains(dr).double_click(元素).perform() # 双击
ActionChains(dr).move_to_element(元素).perform() # 鼠标悬停
ActionChains(dr).drag_and_drop(source, target).perform() # 将source元素拖拽到target元素位
ActionChains(dr).drag_and_drop(source, x, y).perform() # 将source元素相对于自己的位置拖拽
键盘事件(引入Keys )
driver.find_element_by_id("kw").send_keys("seleniumm") # 输入内容selenium
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) # 退格
driver.find_element_by_id("kw").send_keys(Keys.SPACE) # 空格键
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') # 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') # 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v') # 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c') # 复制选中的内容
driver.find_element_by_id("su").send_keys(Keys.ENTER) # 回车操作代替点击按钮
driver.find_element_by_id("su").send_keys(Keys.ESCAPE) # 退出按钮
driver.find_element_by_id("su").send_keys(Keys.TAB) # 制表键
driver.find_element_by_id("su").send_keys(Keys.F1) # 按下键盘F1
等待事件(引入WebDriverWait、expected_conditions)
显式等待
WebDriverWait(self.dr, 5, 0.3).until(EC.presence_of_element_located((By.ID, "msg"))) # 等待5秒钟,每隔0,3秒钟询问一次,直到出现id为msg的元素
WebDriverWait(dr, 5, 0.1).until_not(ec.text_to_be_present_in_element((By.CSS_SELECTOR, '#chaptercontent'),U'正在转码,请稍后......')) # 等待5秒钟,每隔0.1秒询问一次,直到id为chaptercontent的元素文本内容不是“正在转码,请稍后......”
显示等待的判断条件
visibility_of # 是否可见
presence_of_all_elements_located # 判断一组元素的是否存在
text_to_be_present_in_element # 判断元素是否有 xx 文本信息
text_to_be_present_in_element_value # 判断元素值是否有 xx 文本信息
frame_to_be_available_and_switch_to_it # 框架是否可用,并切换到该框架
invisibility_of_element_located # 判断元素是否隐藏
element_to_be_clickable # 判断元素是否点击,它处于可见和启动状态
staleness_of # 等到一个元素不再是依附于 DOM
element_to_be_selected #被选中的元素
element_located_to_be_selected # 一个期望的元素位于被选中
element_selection_state_to_be # 一个期望检查如果给定的元素被选中
element_located_selection_state_to_be # 期望找到一个元素并检查是否选择状态
alert_is_present # 预期一个警告信息
隐式等待
dr.implicitly_wait(10) # 等待10秒钟,若提前结束就停止等待,若超时就抛出异常
sleep(引出sleep)
sleep(10) # 等待10秒钟,不管是否提前结束
窗口的切换事件
dr.current_window_handle # 获取当前窗口的句柄,切换到js弹框上
dr.window_handles # 获取所有窗口的句柄
dr.switch_to.window() # 切换到某个窗口
警告框切换事件
dr.switch_to.alert # 切换到弹框(alert、prompt、confirm)
dr.switch_to.alert.text # 获取弹框的文本内容
dr.switch_to_alert.accept() # 切换到弹框并且点击“确认”
dr.switch_to.alert.dismiss # 切换到弹框并且点击“取消”
dr.switch_to.alert.sendkeys('hello') # 切换到弹框并且在输入框中输入‘hello’
调用js事件
js="var q=document.documentElement.scrollTop=10000" # 编写js代码:将页面的滚动条向下移动10000px
dr.execute_script(js) # 执行编写好的js代码
浙公网安备 33010602011771号