selenium常用操作

这篇具有很好参考价值的文章主要介绍了selenium常用操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用元素定位

from selenium import  webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s=Service(r'C:\Users\Administrator\Desktop\chromedriver.exe')
driver=webdriver.Chrome(service=s)

# css定位
driver.find_element(By.CSS_SELECTOR,'[class~=article]')
# class定位
driver.find_element(By.CLASS_NAME,'main-header-box')
# id定位
driver.find_element(By.ID,'__nuxt')
# name定位
driver.find_element(By.NAME,'theme-color')
# Xptah 定位
driver.find_element(By.XPATH,'//*[@text="确定"]')
# 超链接定位
driver.find_element(By.LINK_TEXT,'确认点击')
# 超链接模糊定位
driver.find_element(By.PARTIAL_LINK_TEXT,'确认')

元素操作

  • 点击元素:element.click()
    • 示例: web.find_element(By.XPATH,'//*[@text="确定"]').click()
  • 清除文本框:element.clear()
    • 示例: web.find_element(By.XPATH,'//*[@text="文本框"]').clear()
  • 在文本框内输入文本:element.send_keys('要输入的文本')
    • 示例: web.find_element(By.XPATH,'//*[@text="文本框"]').send_keys("123456")
    • 关于文件上传: 碰见文件上传的控件,也可以使用send_keys()来进行文件上传,比如driver.find_element(By.CSS_SELECTOR,"[name='upfilea']").send_keys(r'C:\Users\Administrator\Desktop\chromedriver.exe')
  • 查看元素大小:element.size
    • 示例: web.find_element(By.XPATH,'//*[@text="确定"]').size
  • 查看元素坐标:element.location
    • 示例: web.find_element(By.XPATH,'//*[@text="确定"]').location
  • 获取元素指定属性:element.get_attribute('属性名称')
    • 获取元素href的属性值示例web.find_element(By.XPATH,'//*[@text="确定"]').get_attribute(href)
  • 查看元素是否可见(常用于判断输入框的提示,弹窗是否隐藏等情况):element.is_displayed()
    • 示例: web.find_element(By.XPATH,'//*[@text="确定"]').is_displayed()
  • 查看元素是否可用(常用于判断未输入必要信息按钮置灰等情况):element.is_enabled()
    • 示例: web.find_element(By.XPATH,'//*[@text="确定"]').is_enabled()
  • 查看元素是否可选中(用于检查复选框或单选按钮是否选中):element.is_selected()
    • 示例: web.find_element(By.XPATH,'//*[@text="确定"]').is_selected()

浏览器界面常用操作

  • 最大化浏览器:driver.maximize_window()
  • 指定大小打开浏览器:driver.web.set_window_size(800,800)
  • 将浏览器放置在指定位置:driver.set_window_position(480,480)
  • 后退操作driver.back()
  • 前进操作driver.forward()
  • 刷新操作driver.refresh()
  • 关闭当前窗口driver.close()
  • 关闭浏览器驱动对象driver.quit()
  • 获取当前页面截图:driver.get_screenshot_as_png()这里输出为byte类型,需要存储为图片格式
  • 获取当前页面标题:driver.title
  • 获取当前页面的链接地址:driver.current_url
  • 获取当前页面的xml结构树:driver.page_source

鼠标操作&键盘操作

鼠标操作
  • 注意:所有操作需要先实例化鼠标对象,且所有操作都要使用perform函数进行执行,如下段代码所示
# 导包
from selenium.webdriver import ActionChains
# 实例化对象
action=ActionChains(driver)
# 通过链式调用来进行鼠标操作
action.move_to_element(element).perform()
  • 右键操作:action.double_click(element).perform()
    -解释:对element元素进行鼠标右键操作
  • 双击操作:action.context_click(element).perform()
    -解释:对element元素进行鼠标左键双击操作
  • 悬停操作:action.move_to_element(element).perform()
    -解释:将鼠标指针移动到element元素上面
  • 元素拖动操作:action.drag_and_drop(element1,element2).perform()
    -解释:从element1元素1的位置滑动到element2元素2的位置
  • 坐标拖动操作:action.drag_and_drop_by_offset(element1,x,y).perform()
    -解释:从element1元素1的位置滑动到x轴和y轴的位置
键盘操作
  • 按下键位action.key_down(键值).perform()
    • 按下a键示例:action.key_down('a').perform()
  • 抬起键位action.key_up(键值).perform()
    • 抬起a键示例:action.key_down('a').perform()
  • 输入键值element.send_keys('键值')
    • 按下抬起空格键示例:driver.find_element(By.CSS_SELECTOR,"[name='t1']").send_keys(Keys.BACKSPACE)
    • 按下抬起A键示例:driver.find_element(By.CSS_SELECTOR,"[name='t1']").send_keys('a')
  • 输入组合键值element.send_keys('键值')
    • 按下抬起Ctrl+C键示例:driver.find_element(By.CSS_SELECTOR,"[name='t1']").send_keys(Keys.CONTROL,'c')

等待操作

隐式等待

解释:隐式等待是全局通用的等待,比如我们设置15秒的等待时间,假如在15秒内找到元素就会继续往下跑,假如15秒内没有找到则报错
示例:driver.implicitly_wait(15)

显式等待

解释:相比隐式等待,显式等待只对指定元素生效,不再是在整个WebDriver生命周期内生效【仅对元素生效】
示例:

# 导包
from selenium import  webdriver
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWait

s=Service(r'C:\Users\Administrator\Desktop\chromedriver.exe')
driver=webdriver.Chrome(service=s)
driver.maximize_window()
url= 'http://sahitest.com/demo/keypress.htm'
driver.get(url)
# 进行封装,后续调用就不必重新再写一遍
def Find_element(driver,feature,timeout=10,poll_frequency=0.5):
    """

    :param driver: driver
    :param feature: 元素信息
    :param timeout: 最长等待时间
    :param poll_frequency: 元素查找的间隔时间
    :return:
    """
    feature_by, feature_value = feature
    element = WebDriverWait(driver, timeout, poll_frequency).until(
        # 条件:直到元素加载完成
        lambda  x:x.find_element(feature_by,feature_value)
    )
    # 返回找到的元素
    return element
feature=By.CSS_SELECTOR,"[name='t1']"
# 调用并输入文本
Find_element(driver,feature).send_keys(123123)
time.sleep(5)
driver.quit()
强制等待

解释:强制等待是一种固定的时间的等待,比如我们设置了15秒那么就会在15秒后代码才继续往下跑(需要导入time包)
示例:time.sleep(15)

下拉框操作

前置操作:需要导入select包from selenium.webdriver.support.select import Select
注意:下拉框元素选择一般为select标签

根据下拉框排序进行选择:select.select_by_index(排序位置)

示例:

# 导包
from selenium.webdriver.support.select import Select
element=driver.find_element(By.CSS_SELECTOR,'select')
# 实例化Select
select=Select(element)
# 选择下拉框的第2个选项
select.select_by_index(1)
根据下拉框文本进行选择:select.select_by_visible_text(文本)

示例:

# 导包
from selenium.webdriver.support.select import Select
element=driver.find_element(By.CSS_SELECTOR,'select')
# 实例化Select
select=Select(element)
# 选择下拉框的选择文本为上海的选项
select.select_by_visible_text("上海")
根据下拉框文本进行选择:select.select_by_value(value属性的值)

示例:

# 导包
from selenium.webdriver.support.select import Select
element=driver.find_element(By.CSS_SELECTOR,'select')
# 实例化Select
select=Select(element)
# 选择下拉框的value属性等于bj的选项
select.select_by_value("bj")

弹出框操作

常用弹出框类型
- alert:警告框
- confirm:确认框
- prompt:提示框
常用弹出框操作
- **点击确定**:`driver.switch_to.alert.accept()`
- **点击取消**:`driver.switch_to.alert.dismiss()`
- **在弹出框的文本框内输入文本**:`driver.switch_to.alert.send_keys("要输入的文本")`
- **获取弹出框文本内容**:`driver.switch_to.alert.text`

滚动条操作

使用driver.execute_script()运行js代码来达到滑动滚动条的操作
示例:driver.execute_script("window.scrollBy(0,1000)")
解释: window.scrollBy(x,y),假如x=0,y=1000那么就是向上下滑动,假如x=1000,y=0则左右滑动
,比如x=1000,y=0那么就是向右滑动1000像素,x=0,y=1000那么就是向下滑动1000像素,假如要向上滑动1000像素,只要x=0,y=-1000即可。

frameset切换

frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有一组方法对frame进行操作。如下段代码所示

形式一:
<html lang="en">
<head>
    <title>FrameTest</title>
</head>
<body>
<iframe src="a.html" id="frame1" name="myframe"></iframe>
</body>
</html>

形式二:
<frameset>
	<frame src="test01.html">....</frame>
	<frame src="test02.html">....</frame>
</frameset>
切换frame
  • 使用数字进行切换:driver.switch_to.frame(0)
    • 示例:driver.switch_to.frame(0) 根据多个frame标签进行选择,默认第一个为0
  • 使用id的属性进行切换:driver.switch_to.frame(id的值)
    • 当id的值为my_id进行切换,示例:driver.switch_to.frame(my_id)
  • 使用name属性进行切换:driver.switch_to.frame(name的值)
    • 当name的值为my_name时进行切换,示例:driver.switch_to.frame(my_name)
  • 使用element进行切换:driver.switch_to.frame(element)
    • 使用元素定位来进行切换,示例:driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR,"[src*='A']"))
注意:注意切换同等级不同frame时需要退出当前的frame;比如1frame与2frame是同一层级,那么假如1frame后需要退出当前的frame然后才能进入frame2;假如frame1与frame2是父子层级,进入frame1后不用切换直接进入frame2即可;又比如进入了好几层深度的frame,那么只需要退出一次frame就会到第一层级(也就是主层级)
退出当前的frame
  • 示例代码:driver.switch_to.default_content()

切换窗口

获取当前窗口句柄
  • 示例代码:driver.window_handles
获取所有窗口句柄
  • 示例代码:driver.current_window_handle
根据窗口句柄进行切换
  • 示例代码:driver.switch_to.window(要切换的句柄代码)

cookie操作

假设当前网站cookie如下图所示:
selenium常用操作

获取单个cookie

获取BD_UPN的cookie代码示例:driver.get_cookie("BD_UPN")
返回结果为:{'domain': 'www.baidu.com', 'expiry': 1653226541, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}

获取所有cookie

获取所有的cookie代码示例:driver.get_cookies()
返回结果为:[{'domain': '.baidu.com', 'expiry': 1652448941, 'httpOnly': False, 'name': 'BA_HECTOR', 'path': '/', 'secure': False, 'value': '2c8k018185a50hekio1h7q39e0q'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'} ....省略]

添加cookie

添加cookie代码示例:driver.add_cookie({"name":'test',"value":'123456'})==
或者可以这样添加:driver.add_cookie({'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'bbaaa', 'path': '/', 'secure': False, 'value': '4444'})
注意::假如要在使用cookie只能在driver.get()方法之后才能添加,所以要使用的话可以使用driver.get()方法,然后使用driver.add_cookie()添加cookie,最后调用driver.refresh()方法刷新页面即可文章来源地址https://www.toymoban.com/news/detail-450871.html

到了这里,关于selenium常用操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium【元素定位与操作】

    定位元素 [@属性=‘属性值’] [@属性] [tag] [text()=‘文本’] 返回的是元素两个间的文本 [contains(text(),“元素两个间的部分文本”)] [contains(@属性名,“部分属性值”)] 定位下拉列表的某个选项:driver.find_element(By.XPATH,‘//option[text()=“联想”]’) driver.find_element(By.XPATH,‘//o

    2024年04月18日
    浏览(59)
  • selenium新版元素定位方法、元素操作与基本API

    注意:selenium新版元素定位需要导入方法By,使用By来调用元素定位方法     from selenium.webdriver.common.by import By     标签的 id属性具有唯一性,就像人的身份证,不存在根据一个id属性定位到多个标签的情况。假设有个iframe标签如下,其 id 属性值为\\\"actionFrame\\\"。 我们可以通过

    2024年02月03日
    浏览(67)
  • 软件测试/测试开发丨Selenium的常用元素定位方法

    Selenium是一个流行的开源框架,目前在 Web 自动化方面运用最为广泛的一个开源、无浏览器要求、可支持多语言、设计测试用例非常灵活的自动化测试框架。支持多种编程语言,并且能够模拟用户操作,例如点击、输入、提交等等。 在Selenium中,元素定位是一个非常重要的步骤

    2024年01月16日
    浏览(67)
  • selenium定位元素(包括父子,兄弟)及常见操作

    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() .表示当前节点,…表示父

    2023年04月08日
    浏览(76)
  • selenium不定位元素直接使用键盘操作(如弹框操作)

    今天在使用selenium进行定位时,发现直接定位不了chrome的弹框,如这种弹框: 使用的是下面这行代码 运行报错,说是没有 alert windown。。。。 啊?难道chrome的弹框不是用alert写的?emmm……还真是,现在很少使用alert这种原生弹框了,多多少少都会自己封装下,然后就……全网

    2024年02月08日
    浏览(46)
  • Selenium常见元素定位方法和操作的学习介绍

            官网地址: 4. Locating Elements — Selenium Python Bindings 2 documentation         这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素: find_element_by_id find_element_by_name

    2024年02月08日
    浏览(50)
  • 【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

    Selenium模拟用户在浏览器中的操作,比如点击按钮。在某些场景下,我们需要 模拟鼠标悬停的操作,来触发一些隐藏的元素。 本文将介绍Python Selenium实现鼠标悬停操作。 鼠标悬停,即 当光标与其名称表示的元素重叠时触发的事件,在Selenium中将键盘鼠标操作封装在Action Cha

    2024年04月10日
    浏览(75)
  • 【selenium自动化测试】如何定位页面元素,及对页面元素的操作方法

    selenium元素定位 ​selenium定位元素的方式有8种。 fild_element(by,value):by表示使用的定位方式,定位方式可以参见By类。value表示值,例如:根据id定位 By.ID,value=id属性的值。该方法返回元素对象,返回值如下: 这个返回结果说明:返回值为WebElement类的对象,元素在使用方法时

    2024年02月10日
    浏览(68)
  • Python+Selenium实现列表元素的查找定位及删除操作

    获取列表(单页)全部数据 删除某行元素 查找并删除元素(目前仅支持删除单条数据,循环删除待继续研究) 结果示例

    2024年02月13日
    浏览(64)
  • 【Selenium】隐藏元素的定位和操作|隐藏与isDisplay方法

    一、selenium 中隐藏元素如何定位? 如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了 但是吧~~~能定位到并不意味着能操作元素(如click,clear,send_keys) 二、隐藏元素 如下图有个输入框和一个登录的按钮,本来是显示的   元素的属性隐藏

    2024年04月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包