python selenium 库使用

目录

安装selenium

环境搭建

selenium快速入门

1、元素定位

selenium 库下webdriver模块的常用方法

1、控制浏览器操作

2、鼠标事件

3、键盘事件

4、表单切换

5、多窗口切换

6、弹框处理

7、下拉框选择操作


安装selenium

  • pip install selenium

环境搭建

  • 下载对应版本浏览器驱动(selenium调用浏览器必须有一个webdriver的驱动文件)
  • 配置环境变量,path=驱动下载目录

selenium快速入门

1、元素定位

提供了8种元素定位方式:id,name, class name, tag name, link text, partial link text, xpath, css selector

定位一个元素

定位多个元素

示例演示

备注说明

find_element_by_class_name find_elements_by_class_name driverr.find_element_by_class_name("s_ipt")通过类名进行定位
find_element_by_css_selectorfind_elements_by_css_selector 

通过css定位,css定位有N种写法,这里列几个常用写法

driver.find_element_by_css_selector("#kw")
driver.find_element_by_css_selector("[name=wd]")
driver.find_element_by_css_selector(".s_ipt")
driver.find_element_by_css_selector("html > body > form > span > input")
driver.find_element_by_css_selector("span.soutu-btn> input#kw")
driver.find_element_by_css_selector("form#form > span > input")

通过css选择器进行定位
find_element_by_idfind_elements_by_id driver.find_element_by_id("kw")通过元素id定位
find_element_by_link_text find_elements_by_link_tex 

元素:<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>

driver.find_element_by_link_text("新闻")

通过完整超链接定位
find_element_by_name find_elements_by_name driver.find_element_by_name("wd")通过元素name定位
find_element_by_partial_link_text find_elements_by_partial_link_text driver.find_element_by_link_text("新")通过部分链接定位
find_element_by_tag_name find_elements_by_tag_name driver.find_element_by_tag_name("input")通过标签定位
find_element_by_xpath find_elements_by_xpath 

xpath定位有N种写法,这里列几个常用写法:

driver.find_element_by_xpath("//*[@id='kw']")
driver.find_element_by_xpath("//*[@name='wd']")
driver.find_element_by_xpath("//input[@class='s_ipt']")
driver.find_element_by_xpath("/html/body/form/span/input")
driver.find_element_by_xpath("//span[@class='soutu-btn']/input")
driver.find_element_by_xpath("//form[@id='form']/span/input")
driver.find_element_by_xpath("//input[@id='kw' and @name='wd']")

通过xpath表达式定位


selenium 库下webdriver模块的常用方法

1、控制浏览器操作

方法

说明

set_window_size()设置窗口尺寸
back()后退
forward()前进
refresh()刷新当前页面
clear()清除文本
send_keys (value)模拟按键输入
click()单击元素

2、鼠标事件

鼠标操作的方法封装在ActionChains类里面

方法

说明

ActionChains(driver)构造ActionChains对象
context_click()执行鼠标悬停操作
move_to_element(above)鼠标悬停
double_click()双击
drag_and_drop()拖动
perform()执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作

3、键盘事件

Selenium中的Key模块为我们提供了模拟键盘按键的方法,那就是send_keys()方法。它不仅可以模拟键盘输入,也可以模拟键盘的操作

模拟键盘按键

说明

send_keys(Keys.BACK_SPACE)删除键(BackSpace)
send_keys(Keys.TAB)制表键(Tab)
send_keys(Keys.ENTER)回车键(Enter)
send_keys(Keys.CONTROL,‘a’)组合键:全选(Ctrl+A)
send_keys(Keys.CONTROL,‘c’)组合键:复制(Ctrl+C)

4、表单切换

webdriver只能在一个页面上对元素识别定位,对于iframe表单内嵌页面上的元素无法直接定位,需要将当前定位的主体切换到iframe表单内嵌页面内

方法

说明

switch_to.frame()

将当前定位的主体切换为frame/iframe表单的内嵌页面中

默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位:

#先通过xpth定位到iframe

xf = driver.find_element_by_xpath('//*[@id="x-URS-iframe"]')

#再将定位对象传给

switch_to.frame()方法 driver.switch_to.frame(xf)

switch_to.default_content()跳回最外层的页面

5、多窗口切换

在操作过程中有时候点击某个按钮或链接,会新开一个浏览器窗口,若需要对新窗口元素识别操作,需要先切换到最新窗口内,webdriver提供了switch_to.window()方法,可以实现不同窗口的切换

方法

说明

方法

说明

current_window_handle获得当前窗口句柄
window_handles返回所有窗口的句柄到当前会话
switch_to.window()用于切换到相应的窗口,switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。

6、弹框处理

在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作

方法

示例

说明

text返回 alert/confirm/prompt 中的文字信息
accept()driver.switch_to.alert.accept()接受现有警告框
dismiss()关闭现有警告框

7、下拉框选择操作

提供select 类处理下拉框操作,导入指定类即可:from selenium.webdriver.support.select import Select

方法

说明

select_by_value(“选择值”)select标签的value属性的值
select_by_index(“索引值”)下拉框的索引
select_by_visible_testx(“文本值”)下拉框的文本值
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值