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 自动化常用操作的更多相关文章

  1. python selenium 基本常用操作

    最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要.因本人水平有限,有不对之处多多包涵!欢迎指正! 一.xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css ...

  2. selenium 基本常用操作

    from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChains #鼠标操作 ...

  3. python selenium自动化常用关键字

    工具安装: 1.安装python 2.安装selenium库(dos命令下进入selenium-2.53.2存放路径,执行pip install selenium-2.53.2) 3.将浏览器驱动放到 ...

  4. python中selenium自动化常用关键字

    一:定位八种方法 例如: 二:常见的webdriver方法 1.浏览器相关:(打开浏览器先导入webdriver模块) (1)set_window_size(480,800)调整浏览器宽高大小 (2) ...

  5. selenium自动化常用函数

    前段时间弄一个测试框架,满足公司简单网站的测试,整合了一个函数模块,包括常用的截图.邮件发送.测试报告生成,具体代码如下 import smtplib from BSTestRunner import ...

  6. Selenium自动化脚本开发总结

    Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  7. 【python+selenium的web自动化】- 元素的常用操作详解(一)

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html ​ 本篇主要内容:1.元素 ...

  8. Python+Selenium自动化-模拟键盘操作

    Python+Selenium自动化-模拟键盘操作   0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...

  9. selenium自动化过程中如何操作Flash动画

    最近在看python的爬虫框架(scrapy),一个词概括就是:"酸爽"!等把selenium自动化版块讲完后,打算写一写关于scrapy相关的知识,打算从源码角度解析下scrap ...

  10. python+selenium实现动态爬取及selenuim的常用操作

    应用实例可以参考博客中的12306自动抢票应用 https://www.cnblogs.com/mumengyun/p/10001109.html 动态网页数据抓取 什么是AJAX: AJAX(Asy ...

随机推荐

  1. sensitive-word 敏感词/脏词开源工具-v.0.10.0-脏词分类标签支持

    sensitive-word sensitive-word 基于 DFA 算法实现的高性能敏感词工具. 创作目的 实现一款好用敏感词工具. 基于 DFA 算法实现,目前敏感词库内容收录 6W+(源文件 ...

  2. java 从零开始手写 redis(九)LRU 缓存淘汰算法如何避免缓存污染

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  3. 玩转 CMS2

    玩转 CMS2 上篇研究了样式.请求.evn.mock,感觉对效率的提升没有太明显作用. 比如某个工作需要2天,现在1天可以干完,这就是很大的提升. 提高效率的方法有代码复用.模块化.低代码工具. 目 ...

  4. 【framework】ATMS启动流程

    1 前言 ​ ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务.堆栈.显示等).ATMS 在 Android 10 中才出现,由原来的 A ...

  5. Jsp+Servlet实现文件上传下载(二)--文件列表展示

    接着上一篇讲: Jsp+Servlet实现文件上传下载(一)--文件上传 点击打开链接 本章来实现一下上传文件列表展示,同时优化了一下第一章中的代码. 废话少说,上代码 --------------- ...

  6. TCP协议的流量控制和拥塞控制

    一开始,我总是容易把这2个概念搞混淆了,因此,为了加深理解,我写出来整理下思路. 一:流量控制 什么是流量控制,它涉及到哪些内容呢? 首先,我们看看一个最简单的tcp传输涉及到哪些东西 发送端,数据, ...

  7. 使用TLP对Linux系统进行充电保护

    https://zhuanlan.zhihu.com/p/65546444 TLP:一个可以延长 Linux 笔记本电池寿命的高级电源管理工具 https://blog.csdn.net/zxw781 ...

  8. Oracle日期格式化问题:to_date(sysdate,'yyyy-MM-dd')与 to_date(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd')区别

    1.需求描述 对系统日期进行格式化,并仍保持日期类型 2.错误方法 直接使用to_date()实现 SELECT TO_DATE(SYSDATE,'YYYY-MM-DD') FROM DUAL; 这样 ...

  9. 数据抽取平台pydatax介绍--实现和项目使用

    数据抽取平台pydatax实现过程中,有2个关键点: 1.是否能在python3中调用执行datax任务,自己测试了一下可以,代码如下:    这个str1就是配置的shell文件 try: resu ...

  10. zookeeper运行时dos窗口一闪而过

    错误:从官网下载zookeeper解压到本地之后,鼠标双击运行zkServer.cmd文件,dos窗口一闪而过,看不到错误原因: 解决方法:通过dos窗口执行zkServer.cmd文件,对应的错误信 ...