selenium的基本使用

本文详细介绍了Selenium在Python环境下的配置步骤,包括Driver的下载和配置、三种等待方式,以及如何进行Web控件交互,如Actions和TouchActions。此外,还涵盖了表单操作、多窗口处理、网页frame的切换、多浏览器自动化测试和处理弹框等实战技巧。
摘要由CSDN通过智能技术生成

一、selenium环境配置步骤

1、准备好python环境

2、准备好selenium环境

下载或更新到最新版本
pip install -U selenium

3、下载浏览器对应的driver版本

4、driver配置环境变量

5、在python中import对应的依赖

二、Driver配置

Driver的介绍:

https://www.selenium.dev/documentation/en/webdriver/driver_requirements/

Driver的下载:

  1. 淘宝镜像:https://npm.taobao.org/mirrors/chromedriver/
  2. 官方网站:https://chromedriver.storage.googleapis.com/index.html

Driver的安装:

  • 找到和自己浏览器版本适配的driver版本,通过浏览器的设置查看浏览器版本,然后找对应附近版本的驱动
  • 导入到环境变量中

验证驱动配置环境变量是否成功:
在这里插入图片描述

三、三种等待方式

直接等待

又称为强制等待,线程休眠一定的时间

import time

time.sleep(1)

隐式等待

设置一个等待时间,轮询查找(默认0.5秒)元素是否出现,如果没出现就抛出异常。

隐式等待是全局的,只需要设置一次。

self.driver.implicitly_wait(3)

显示等待

在代码中定义等待条件,当条件发生时才继续执行代码。

WebDriverWait配合until() 和 until_not() 方法,根据判断条件进行等待。

程序每隔一段时间(默认是0.5秒)进行条件判断,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间。

四、Web控件的交互

常用的操作事件(右键点击,页面滑动,表单操作等)

4.1、Actions

官方文档:https://selenium-python.readthedocs.io/api.html

4.1.1、ActionChains

执行PC端的鼠标点击、双击、右键、拖拽等事件

执行原理

调用ActionChains的方法时,不会立即执行,而是将所有的操作,按顺序存放在一个队列里,当你调用perform()方法时,队列中的事件会依次执行。

具体写法

链式写法

ActionChains(driver).move_to_element(element).click(element).perform()

分布式写法

actions = ActionChains(driver)
actions.move_to_element(element)
actions.click(element)
actions.perform()

示例

from time import sleep

import pytest
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys


class TestActionChains:

	def setup(self):
		self.driver = webdriver.Chrome()
		self.driver.implicitly_wait(5)
		self.driver.maximize_window()

	def teardown(self):
		self.driver.quit()

	def test_action_chains_click(self):
		"""
		模拟点击:click
		模拟双击:double_click
		模拟右键点击:context_click
		pause:每个操作完成后,暂停时间
		:return:
		"""
		self.driver.get('http://sahitest.com/demo/clicks.htm')
		click_me_ele = self.driver.find_element(By.XPATH, '//*[@value="click me"]')
		right_click_me_ele = self.driver.find_element(By.XPATH, '//*[@value="right click me"]')
		dbl_click_me_ele = self.driver.find_element(By.XPATH, '//*[@value="dbl click me"]')
		ActionChains(self.driver).click(click_me_ele).pause(
			1).double_click(dbl_click_me_ele).pause(
			1).context_click(right_click_me_ele).pause(1).perform()

	def test_action_chains_move_to(self):
		"""鼠标移动到某个元素上:move_to_element"""
		self.driver.get('https://www.baidu.com/')
		ele = self.driver.find_element_by_id('s-usersetting-top')
		ActionChains(self.driver).move_to_element(ele).perform()
		sleep(3)

	def test_action_chains_drag_drop(self):
		"""元素拖拽到某个元素上"""
		self.driver.get('http://sahitest.com/demo/dragDropMooTools.htm')
		drag_ele = self.driver.find_element_by_id('dragger')
		drop_eles = self.driver.find_elements(By.XPATH, '//*[@class="item"]')
		for drop_ele in drop_eles:
			# ActionChains(self.drivers).drag_and_drop(drag_ele, drop_ele).perform()
			# ActionChains(self.drivers).click_and_hold(drag_ele).release(drop_ele).perform()
			ActionChains(self.driver).click_and_hold(drag_ele).move_to_element(drop_ele).release().perform()
			sleep(0.5)

	def test_action_chains_keys(self):
		"""
		ActionChains模拟按键:
		模拟按键有多种方法,能用win32api来实现,能用SendKeys来实现,也可以用selenium的
		WebElement对象的send_keys()方法来实现
		:return:
		"""
		self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值