python selenium模块的一些实用技巧

一、selenium元素定位技巧

selenium提供了8种定位方式python selenium中对应8种方法
idfind_element_by_id()
namefind_element_by_name()
class_namefind_element_by_class_name()
tag_namefind_element_by_tag_name()
link_textfind_element_by_link_text()
partial_link_textfind_element_by_partial_link_text()
xpathfind_element_by_xpath()
css_selectorfind_element_by_css_selector()
selenium元素定位示例如下:

在这里插入图片描述
模拟定位到如上图的input标签

①通过id定位:
dr.find_element_by_id("kw")

②通过name定位:
dr.find_element_by_name("wd")

③通过class_name定位:
dr.find_element_by_class_name("s_ipt")

④通过tag_name定位:
dr.find_element_by_tag_name("input")

⑤通过xpath定位:
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
或者dr.find_element_by_xpath("//input[@class='s_ipt']")

⑥通过css定位:
dr.find_element_by_css_selector(".s_ipt")
或者dr.find_element_by_css_selector("form#form>span>input")

在这里插入图片描述
模拟定位到如上图的a标签

通过link_text定位:
dr.find_element_by_link_text("新闻") # 精确匹配超链接载体

通过link_text定位:
dr.find_element_by_partial_link_text("新") # 模糊匹配超链接载体

link_textpartial_link_text区别:

link_text 是超链接载体的精确匹配,而partial_link_text是对超链接载体的模糊匹配

二、selenium浏览器交互操作技巧

1).设置浏览器显示宽度

设置浏览器宽480、高800显示:
driver.set_window_size(480, 800)
但一般都不使用该方法,怕页面太小获取不到想要的内容

可以使用最大化来显示,如下:
driver.maximize_window()

或者不设置(即默认)

2).控制浏览器刷新、前进、后退

driver.refresh() 刷新

driver.back() 后退

driver.forward() 前进

3).控制鼠标

使用控制鼠标的操作,需要导入如下该包:
from selenium.webdriver.common.action_chains import ActionChains

以下四种鼠标操作都是ActionChains中存储的行为:

context_click() 右击

double_click() 双击

drag_and_drop() 拖动

move_to_element() 鼠标悬停

》》》perform() 执行所有ActionChains中存储的行为
perform() 方法需要在以上四种鼠标操作执行后再调用!!!

4).selenium设置元素等待
WebDriver提供了两种类型的等待:显示等待隐式等待

👉显示等待:【WebDriverWait()】:显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。

显示等待的用法比较多,该写法如下:

导入:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

》导入selenium模块的 浏览器驱动 (webdriver)
》导入By这个包,起到简写的作用,简化了"find_element_by_id"等的用法。后面查id时,直接By.ID即可查出id标签

》导入selenium模块的 WebDriverWait显示等待

》导入selenium模块的场景判断(EC),用来判断某个元素是否出现

编写如下代码:

driver = webdriver.Chrome()	# 使用Chrome浏览器驱动
WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))

其中:
》dirver:表示驱动

》5:表示等待的最长时间

》0.5:是每隔0.5秒检测一次

》until():方法用来传入等待的条件

》presence_of_element_located:表示节点出现的意思

👉隐式等待:【implicitly_wait()】是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

三、selenium的其他用法

参考selenium的使用(有点意思)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值