一、打开网页
#启动驱动程序,并访问网页
# 驱动文件路径
driverfile_path = r'/usr/bin/chromedriver'
# 启动浏览器
driver = webdriver.Chrome(driverfile_path)
# 访问网页
driver.get('https://sfrz.cug.edu.cn/tpass/login')
二、窗口操作
- 将浏览器最大化显示
browser.maximize_window()
- 将浏览器最小化显示
browser.minimize_window()
- 浏览器设置窗口大小
#设置浏览器宽480、高800显示
browser.set_window_size(480, 800)
- 浏览器前进后退
#前进
browser.forword()
#后退
browser.back()
三、操作事件
#对象操作事件
click——点击对象
send_keys——在对象上模拟按键输入
clear——清除对象的内容,如果可以的话
submit——提交对象的内容,如果可以的话
text——用于获取元素的文本信息
#键盘事件
要想调用键盘按键操作需要引入 keys 包:
from selenium.webdriver.common.keys import Keys
通过 send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
键盘组合键的用法:
#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
#鼠标事件
鼠标事件一般包括鼠标右键、双击、拖动、移动鼠标到某个元素上等等。
需要引入ActionChains类。
引入方法:from selenium.webdriver.common.action_chains import ActionChains
ActionChains 常用方法:
perform() 执行所有ActionChains 中存储的行为;
context_click() 右击;
double_click() 双击;
drag_and_drop() 拖动;
move_to_element() 鼠标悬停。
鼠标双击示例:
#定位到要双击的元素qqq =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击操作 ActionChains(driver).double_click(qqq).perform()
鼠标拖放示例:
#定位元素的原位置 element = driver.find_element_by_name("source")
#定位元素要移动到的目标位置 target = driver.find_element_by_name("target")
#执行元素的移动操作 ActionChains(driver).drag_and_drop(element, target).perform()
四、一般问题
多层框架/层级定位
定位元素过程中经常会遇到找不到元素的问题,出现该问题一般都是以下因素导致:
1.元素定位方法不对
2.页面存在iframe或内嵌窗口
3.页面超时
webdriver 提供了一个 switch_to_frame 方法,可以很轻松的来解决这个问题。
用法:
#先找到到 iframe1(id = f1)browser.switch_to_frame("f1")
同样的,如果是内嵌窗口:browser.switch_to_window("f1")
五、定位控件(重点)
- id定位:find_element_by_id()
- name定位:find_element_by_name()
- class定位:find_element_by_class_name()
- link定位:find_element_by_link_text()
- partial link定位:find_element_by_partial_link_text()
- tag定位:find_element_by_tag_name()
- xpath定位:find_element_by_xpath()
- css定位:find_element_by_css_selector()
下一篇更新CSS选择定位方法