webdriver--常用API的了解

本文介绍了WebDriver的工作流程,详细讲解了如何使用WebDriver进行元素定位,如id、name、class_name等,并给出了实例。同时,文章涵盖了WebDriver提供的常用函数,如find_element_by、send_keys、click等,以及浏览器操作,如最大化、前进/后退。还讨论了键盘和鼠标事件的模拟,以及如何定位和操作一组元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在了解webdriver常用的API之前,先来了解一下webdriver的工作流程:
在这里插入图片描述
由上图我们可以看出,当用户操作相应的浏览器时,webdriver会通过浏览器的原生组件,转化Web Service的命令为浏览器的native的调用来完成操作;脚本运行后,会打开指定浏览器,webdriver会将目标浏览器绑定到指定的端口,这样,启动后的浏览器就会接受脚本的命令。

  1. webdriver提供的八种元素定位的方法:
  1. id
  2. name
  3. class_name
  4. tag_name
  5. xpath
  6. css_selector
  7. link_text
  8. partial_link_text
    以百度为例,使用这八种定位元素的方法:
    首先,打开百度首页,获取到百度搜索框的描述元素的语句,示例如下:
    在这里插入图片描述
    接下来就可以定位元素了:
#coding=utf-8
from selenium import webdriver
import time
#打开指定的浏览器
browser=webdriver.Chrome()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
#在百度搜索框中输入"readinig"并搜索
#browser.find_element_by_id("kw").send_keys("reading")
#browser.find_element_by_name("wd").send_keys("reading")
#browser.find_element_by_class_name("s_ipt").send_keys("reading")
#browser.find_element_by_tag_name("input").send_keys("reading")不可执行 因为input太多
#browser.find_element_by_xpath("//*[@id='kw']").send_keys("reading")
#browser.find_element_by_css_selector("#kw").send_keys("reading")
#在百度浏览器中找到"hao123"并打开此网页
#browser.find_element_by_link_text("hao123").click()
#browser.find_element_by_partial_link_text("hao").click()
time.sleep(3)
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()

  1. 常用的函数:
  1. find_element_by_元素定位方法(“对应元素名称”) --> 定位元素
  2. send_keys(“内容”) --> 模拟键盘手动输入内容
  3. clear() --> 清除当前内容
  4. quit() --> 退出所有窗口,退出webdriver,会更好的释放资源
  5. close() --> 关闭当前的浏览器窗口
  6. click() --> 点击
  7. submit() --> 提交内容
  8. sleep(单位:s) --> 添加休眠
  9. implicitly_wait(单位:s) --> 智能等待
  1. 常见获取信息的关键字:
  1. text --> 打印元素文本信息
#coding=utf-8
from selenium import webdriver
import time
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
time.sleep(3)
txt=browser.find_element_by_id("cp").text
print txt
time.sleep(3)
browser.quit()

执行结果:
在这里插入图片描述
2) title --> 打印元素标题信息
3) current_url --> 打印当前路径

#coding=utf-8
from selenium import webdriver
import time
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
print browser.title
print browser.current_url
browser.quit()

结果如下:
在这里插入图片描述
4. 浏览器的常用操作:

  1. 浏览器最大化 --> maximize_window()
  2. 设置浏览器大小 --> set_window_size(宽,高)
  3. 浏览器的前进/后退 --> forward()/back()
  4. 控制浏览器滚动条:实际上是采用了js语句,然后在当前窗口同步执行JS语句 --> execute_script(js)
    这是一个简单的进入百度页面,搜索相关事件,完成浏览器的前进,后退以及其他操作,使用time.sleep()可以清楚地观察到每一步的执行:
#coding=utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
#设置窗口大小
driver.set_window_size(480,800)
driver.get("http://www.baidu.com")
#窗口最大化
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
driver.find_element_by_id("su").click()
time.sleep(2)
#后退到百度首页
driver.back()
time.sleep(2)
#前进到刚才的selenium搜索页面
driver.forward()
time.sleep(2)
#将页面滚动到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(2)
#滚动到顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(2)
driver.quit()
  1. 键盘事件:
    键盘按键用法:首先需要导入Keys包 --> from selenium.webdriver.common.keys import Keys
  1. 使用TAB键以及ENTER键:send_keys(Keys.TAB/EM=ENTER)
  2. 使用复合键(复制/粘贴/全选/剪切):send_keys(Keys.CONTROL,‘c’/‘v’/‘a’/‘x’)
  1. 鼠标事件:
    鼠标事件用法:首先需要导入ActionChains包 --> from selenium.webdriver.common.action_chains import ActionChains
  1. 右击:context_click()
  2. 双击:double_click()
  3. 拖动:drag_and_drop(source,target)
  4. 鼠标悬停在一个元素上:move_to_element()
#coding=utf-8
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get("http://www.baidu.com")
d.find_element_by_id("kw").send_keys("yuanlin")
time.sleep(3)
qqq=d.find_element_by_xpath("//*[@id='su']")
#右击
ActionChains(d).context_click(qqq).perform()
time.sleep(3)
#双击
ActionChains(d).double_click(qqq).perform()
time.sleep(3)
#给出要悬停的位置(我这里找的是搜索园林之后的"园林图片"这个标题)
target=d.find_element_by_xpath("//*[@id='2']/h3/a")
#鼠标找到目标位置并悬停
ActionChains(d).move_to_element(target)
time.sleep(3)
#点击
target.click()
time.sleep(3)
d.quit()
  1. 定位一组元素:
  1. 获取当前文件的绝对路径:os.path.abspath(‘文件名’)
  2. 选择页面上所有的同名的属性
  3. 通过for循环还有get_attribute(‘属性名称’)获得属性值,选择自己想要勾选的相关数据即可

先来看一下我们的html文件所生成的页面:
在这里插入图片描述
如果我们要勾选多个复选框,首先要观察他们的描述的异同点:
在这里插入图片描述
可以发现,它们的tag_name都是"input",但是类型是checkbox,与radio不同。
故代码实现如下:

#coding=utf-8
from selenium import webdriver
import time
import os
driver=webdriver.Chrome()
#获取当前文件的绝对路径
file_path=os.path.abspath('checkbox.html')
driver.get(file_path)
time.sleep(3)
#定位到多个元素
inputs=driver.find_elements_by_tag_name("input")
for input in inputs:
#筛选出我们所要的多个元素
    if input.get_attribute('type')=='checkbox':
        input.click()
time.sleep(3)
driver.quit()

结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值