元素操作方法
- send_keys() 输入方法
- click() 点击方法
- clear() 清空
在输入方法操作之前一定要清空操作
操作浏览器常用方法
- maximize_window() 最大化浏览器窗口–>模拟浏览器最大化按钮
- set_window_size(width,height) 设置浏览器窗口大小–>设置浏览器宽、高(像素点)
- set_window_position(x,y) 设置浏览器窗口位置–>设置浏览器位置
- back() 后退–>模拟浏览器后退
- forward() 前进–>模拟浏览器前进按钮
- refresh() 刷新–>模拟浏览器F5刷新
- close() 关闭当前窗口(默认启动哪个界面,就是主窗口)–>模拟点击浏览器关闭按钮
- quit() 关闭浏览器驱动对象–>关闭所有程序启动的对象
- title 获取页面title
- current_url 获取当前页面url
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get('http://120.79.134.189/page/xiaoyu-authority_management/login.html')
driver.find_element_by_id("login").click()
driver.maximize_window()
sleep(2)
driver.set_window_size(800,500)
sleep(2)
driver.set_window_position(10,50)
sleep(2)
driver.maximize_window()
driver.find_element_by_css_selector("input").send_keys("15679790909")
driver.find_element_by_css_selector("input").clear()
driver.find_element_by_css_selector("input").send_keys("15679790909")
sleep(2)
driver.find_element_by_css_selector("input[name='password']").send_keys(123456)
driver.find_element_by_css_selector("input[id*='in']").click()
driver.back()
driver.forward()
driver.title
driver.current_url
driver.find_element_by_xpath("//*[@id='login']").click()
sleep(1)
driver.quit()
获取元素信息
- size 返回元素大小
- text 获取元素文本
- get_attribute(“xxx”) 获取属性值,传递的参数为元素的属性名
- is_displayed() 判断元素是否可见
- is_enabled() 判断元素是否可用
- is_selected() 判断元素是否选中,用来检查复选框或单选框是否被选中
鼠标事件
鼠标事件对应的方法所在的类
ActionChains类–>导包
例:from selenium.webdriver.common.action_chains
import ActionChains
实例化对象:
action=ActionChains(driver)
鼠标事件常用的操作方法
- context_click() 右击
应用:
Action Chains(driver).contex_click(元素定位).perform() - double_click() 双击
应用:
Action Chains(driver).double_click(元素定位).perform() - drag_and_drop() 拖拽
应用:
Actionchains(driver).drag_anddrop(控制的元素,指定位置).perform() - move_to_element() 悬停
应用:
Action Chains(driver).move_to_click(元素定位).perform() - perform() 执行以上事件方法
键盘操作
Keys类
导包:
from selenium.webdriver.common.keys import Keys
需要实例化
常用键盘操作
- send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
- send_keys(Keys.SPACE) 空格键(Space)
- send_keys(Keys.TAB) 制表键(Tab)
- send_keys(Keys.ESCAPE) 回退键(Esc)
- send_keys(Keys.ENTER) 回车键(Enter)
- send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
- send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
元素等待
why?
由于网络或配置,未第一时间加载出来,二抛出元素未找到异常
隐式元素等待(全局)
driver.implicitly_wait(timout)
(timout:为等待最大时长,一般情况下设置30秒,单位秒)
注:
- 针对所有元素生效
- 一般情况下必写
显式元素等待(局部)
- 导包:
from selenium.webdriver.support.wait import webDriverWait - WebDriverWait(driver,timeout,poll_frequency=0.5)
1)driver 浏览器驱动对象
2)timeout 超时的时长
3)poll_frequency 检测间隔时长,默认0.5s - 调用方法 until(method) 直到…时
1)method 函数名称,该元素用来实现对元素的定位
2)一般使用匿名函数来实现
lambda x:x.find_element_by_id(“userA”) - element=WebDriverWait(driver,timeout=10,poll_frequency=0.1).until(lambda x:x.driver.find_element_by_name(“username”)).send_keys(“15679790909”)
注:
x: x 为driver,它是WebDriverWait类将传入的driver赋值给类self._driver,until方法调用了self.driver
扩展
send_keys(“文件名”) 可以上传文件
例:
driver.find_element_by_css_selector(“[name=‘upfilea’]”).send_key(“D:\hello.txt”)