selenium 自动化常用操作
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import random
import time
用来待时间操作
def wait(n):
time.sleep(random.randint(1, n))
实例化参数对象
options = webdriver.ChromeOptions()
加入参数, 使用options.add_argument()
常用参数
options.add_argument("--headless") # 无头, 也就是没有界面。
options.add_argument("--start-maximized") # 打开时页面最大化
保留用户数据存储的路径,有些需要保存登陆信息, 可以使用命令行启动chrome,输入用户信息保存,再运行自动化。
import os
exe_path = r'"C:\Program Files\Google\Chrome\Application\chrome.exe" -remote-debugging-port=9015 --user-data-dir=E:\wx_wifi\chrome-userdata'
os.system(exe_path)
options.add_argument(r"--user-data-dir=F:\chrome_data")
有些网站会使用反爬技术识别,是不是webdriver自动化的, 可以使用先人工手动打开chrome, 再通过端口运行,这样可以逃避识别。 参考上述exe_path的命令打开。
options.add_experimental_option("debuggerAddress", "127.0.0.1:9015")
它允许用户在Chrome浏览器中启动浏览器时排除特定的Chrome命令行开关,enable-automation 是一个Chrome命令行开关,用于启用Chrome浏览器的自动化功能。禁用它可以帮助防止被一些自动化检测工具检测到。
options.add_experimental_option('excludeSwitches', ['enable-automation'])
实例化chrome驱动对象, 指定驱动的位置与参数
driver = webdriver.Chrome(r'./chromedriver-122.exe', options=options)
设置implicitly_wait,implicitly_wait 的超时时间是从 WebDriver实例化后就开始计算的,直到找到元素或超时为止。如果在超时时间内元素仍然没有加载完成,WebDriver 会抛出一个异常。 只对find_element, find_elements方法的调用。
driver.implicitly_wait(60*3)
打开网页
driver.get('https://baidu.com')
-------------
查找标签元素
返回单个WebElement对象
wait(5)
element = driver.find_element_by_xpath('//input[@id="account"]')
返回列表, 列表元素为WebElement对象
element = driver.find_elements_by_xpath('/html')
-------------
点击元素, 按钮所在的标签, 所含的元素包含里面的都没有问题, 会在查找到元素的“正中心”点击
element.click()
输入框, 先清除文字,后输入文字。
element.clear()
element.send_keys('要输入的字符串')
查看元素的文本内容(可以html界面上展示的文本内容, <> 这里面的内容 <>)
print(element.text)
获取输入框里面的文字
print(element.get_attribute('value'))
如果有些元素没有展示在界面上,text可能获取不了的, 可以用 innerText 或者textContent
print(element.get_attribute('innerText'))
查看元素属性的值, 这个不在html界面显示, 但可以查看源码看到。
print(element.get_attribute('placeholder'))
获取整个元素(包含父元素)里面的元素对应的HTML文本内容, outerHTML
print(element.get_attribute('outerHTML'))
获取单个元素里面的元素对应的HTML文本内容, innerHTML 与 outerHTML 只差一个父元素的显示。
element = driver.find_element_by_xpath('//div[@class="country-panel-code"]')
print(element.get_attribute('innerHTML'))
键盘操作 全选, 复制, 贴贴
element = driver.find_element_by_xpath('//input[@id="account"]')
wait(2)
element.send_keys(Keys.CONTROL, 'a')
wait(2)
element.send_keys(Keys.CONTROL, 'c')
element = driver.find_element_by_xpath('//input[@id="pwd"]')
element.send_keys(Keys.CONTROL, 'v')
selenium 自动化常用操作的更多相关文章
- python selenium 基本常用操作
最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要.因本人水平有限,有不对之处多多包涵!欢迎指正! 一.xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css ...
- selenium 基本常用操作
from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChains #鼠标操作 ...
- python selenium自动化常用关键字
工具安装: 1.安装python 2.安装selenium库(dos命令下进入selenium-2.53.2存放路径,执行pip install selenium-2.53.2) 3.将浏览器驱动放到 ...
- python中selenium自动化常用关键字
一:定位八种方法 例如: 二:常见的webdriver方法 1.浏览器相关:(打开浏览器先导入webdriver模块) (1)set_window_size(480,800)调整浏览器宽高大小 (2) ...
- selenium自动化常用函数
前段时间弄一个测试框架,满足公司简单网站的测试,整合了一个函数模块,包括常用的截图.邮件发送.测试报告生成,具体代码如下 import smtplib from BSTestRunner import ...
- Selenium自动化脚本开发总结
Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...
- 【python+selenium的web自动化】- 元素的常用操作详解(一)
如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 本篇主要内容:1.元素 ...
- Python+Selenium自动化-模拟键盘操作
Python+Selenium自动化-模拟键盘操作 0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...
- selenium自动化过程中如何操作Flash动画
最近在看python的爬虫框架(scrapy),一个词概括就是:"酸爽"!等把selenium自动化版块讲完后,打算写一写关于scrapy相关的知识,打算从源码角度解析下scrap ...
- python+selenium实现动态爬取及selenuim的常用操作
应用实例可以参考博客中的12306自动抢票应用 https://www.cnblogs.com/mumengyun/p/10001109.html 动态网页数据抓取 什么是AJAX: AJAX(Asy ...
随机推荐
- NC20477 [ZJOI2008]树的统计COUNT
题目链接 题目 题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II ...
- NC235247 Sramoc问题
题目链接 题目 题目描述 \(Sramoc(K ,M)\) 表示用数字 \(0,1,2,3,4,...,k-1\) 组成的自然数中能被M整除的最小数.给定 \(K,M\) \(2\leq K\leq ...
- NC16742 [NOIP2002]字串变换
题目链接 题目 题目描述 已知有两个字串 A, B及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在A中的子串 A1可以变换为 B1.A2可以变换 ...
- 基于HTTP2/3的流式请求/响应如何实现?
我想很多人已经体验过GRPC提供的三种流式消息交换(Client Stream.Server Stream和Duplex Stream)模式,在.NET Core上构建的GRPC应用本质上是采用HTT ...
- STC8H8K64U 的 USB 功能测试(续)
对 STC8H8K64U 的USB测试昨天没搞定, 判断可能是供电的问题, 直接用5V不行, 从USB2TTL上采电3.3V时存在一个问题, 就是 D-/D+ 在上电前就已经连接了, 不符合 USB ...
- 【Unity3D】程序纹理简单应用
1 几何纹理应用 本文所有案例的完整资源详见→Unity3D程序纹理简单应用. 1.1 边框 1)边框子图 Border.shadersubgraph 说明:Any 节点用于判断输入向 ...
- 【Android逆向】Frida 无脑暴力破解看雪test2.apk
1. 安装apk到手机 adb install -t test2.apk apk下载位置: https://www.kanxue.com/work-task_read-800625.htm 2. 题目 ...
- mysql分组后获取每个组排序后的第一条数据(整行)
有一个学生分数表student,数据结构是这样的 CREATE TABLE `student` ( `id` int(11) NOT NULL, `student_id` int(11) DEFAUL ...
- vi或vim中底行模式的查找并替换
# 格式 s/要查找的内容/替换为的内容/修饰符 # 说明 要查找的内容:可使用基本正则表达式模式 替换为的内容:不能使用模式,但可以使用\1,\2...等后向引用符号,还可以使用"& ...
- DataGear 制作支持表单交互和多图表联动的数据可视化看板
对于数据可视化,有时需要根据用户输入的查询条件展示限定范围的数据图表,DataGear的看板表单功能可以快速方便地实现此类需求. 下面的看板示例,包含一个柱状图.一个饼图和一个地图,用户可以通过看板表 ...