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')

相关推荐
mike04127 小时前
Eclipse+maven+selenium自动化测试开发环境搭建
selenium·eclipse·maven
数据科学小丫1 天前
浏览器 driver (Chrome & Edge)驱动安装、Selenium 安装,使用Selenium进行网页自动化操作与数据抓取(Edge)
selenium·测试工具·自动化
测试19981 天前
Selenium(Python web测试工具)基本用法详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
TTGGGFF1 天前
爬虫专栏:破解网站检测selenium反爬——“当前环境正在被调试“”
爬虫·selenium·测试工具
ewenge2 天前
springboot+Selenium 实现html转图片(内含驱动包)
spring boot·selenium·html
tang&3 天前
【Python自动化测试】Selenium常用函数详解
开发语言·python·selenium
傻啦嘿哟3 天前
用Playwright替代Selenium:更快更现代的浏览器自动化实战指南
selenium·测试工具·自动化
爱打代码的小林4 天前
python爬虫基础
爬虫·python·selenium
天才测试猿5 天前
自动化测试实践总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
光羽隹衡5 天前
selenium库驱动浏览器
selenium·测试工具