Selenium记录RPA初阶 - 基本输入元件

防止自己遗忘,故作此为记录。

爬取网页基本元件并修改后爬取。

包含元件:

复制代码
elements: dict[str, str] = {
    "username": None,
    "password": None,
    "email": None,
    "website": None,
    "date": None,
    "time": None,
    "number": None,
    "range": None,
    "color": None,
    "search": None
}

步骤:

(1)爬取网页原有信息:

很简单,因为都是<input>元件,只不过type不同,但大差不差。

复制代码
WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.ID, "username")))
for index, element in enumerate(elements):
    elements[element] = driver.find_element(By.ID, element).get_attribute("value")

with open("RPA_read.txt", 'w', encoding="utf-8") as file:
    file.write(pformat(elements))

(2)修改元件内容:

也简单,input元件直接send_keys即可。

复制代码
write_elements: dict[str, str] = {
    "username": "DaisyMo",
    "password": "MyLoveDaisyMo",
    "email": "DaisyMo@email.love",
    "website": "DaisyWithMe.love",
    "date": "8-10",
    "time": str(time()),
    "number": "6",
    "range": "66",
    "color": "#FF8C2F",
    "search": "墨小菊"
}

for index, (element, value) in enumerate(write_elements.items()):
    #更正:需要删除之前的
    driver.find_element(By.ID, element).clear()
    driver.find_element(By.ID, element).send_keys(value)

(3)爬取修改的内容:

大差不差和上面,就是最好判断一下现在的内容和之前的是否相同。

复制代码
(
    WebDriverWait(driver, 10)
    .until(lambda driver: driver.find_element(By.ID, "username")
    .get_attribute("username") != elements["username"])
)

for index, element in enumerate(elements):
    elements[element] = driver.find_element(By.ID, element).get_attribute("value")

with open("RPA_write.txt", 'w', encoding="utf-8") as file:
    file.write(pformat(elements))

#结果就是
{'color': '#000000',
 'date': '2021-06-20',
 'email': 'spiderbuf@126.com',
 'number': '',
 'password': 'spiderbuf',
 'range': '50',
 'search': '',
 'time': '00:01:01',
 'username': 'Spiderbuf',
 'website': 'http://www.spiderbuf.cn'}

#之后
{'color': '#ff8c2f',
 'date': '',
 'email': 'DaisyMo@email.love',
 'number': '6',
 'password': 'MyLoveDaisyMo',
 'range': '50',
 'search': '墨小菊',
 'time': '17:59',
 'username': 'DaisyMo',
 'website': 'DaisyWithMe.love'}

源代码:

python 复制代码
# -*- coding: utf-8 -*-
# -*- file: RPA.py  -*-

from time import time
from pprint import pformat
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.ui import WebDriverWait


target_url: str = r"https://www.spiderbuf.cn/playground/n06"

service: object = ChromeService(r"RPA\chromedriver-win64\chromedriver.exe")
options: object = ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_argument("--disable-blink-features=AutomationControlled")

driver: object = Chrome(service=service, options=options)

driver.get(target_url)

elements: dict[str, str] = {
    "username": None,
    "password": None,
    "email": None,
    "website": None,
    "date": None,
    "time": None,
    "number": None,
    "range": None,
    "color": None,
    "search": None
}

write_elements: dict[str, str] = {
    "username": "DaisyMo",
    "password": "MyLoveDaisyMo",
    "email": "DaisyMo@email.love",
    "website": "DaisyWithMe.love",
    "date": "8-10",
    "time": str(time()),
    "number": "6",
    "range": "66",
    "color": "#FF8C2F",
    "search": "墨小菊"
}

WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.ID, "username")))
for index, element in enumerate(elements):
    elements[element] = driver.find_element(By.ID, element).get_attribute("value")

with open("RPA_read.txt", 'w', encoding="utf-8") as file:
    file.write(pformat(elements))

for index, (element, value) in enumerate(write_elements.items()):
    driver.find_element(By.ID, element).send_keys(value)

WebDriverWait(driver, 10).until(lambda driver: driver.find_element(By.ID, "username").get_attribute("username") != elements["username"])

for index, element in enumerate(elements):
    elements[element] = driver.find_element(By.ID, element).get_attribute("value")

with open("RPA_write.txt", 'w', encoding="utf-8") as file:
    file.write(pformat(elements))

driver.close()

++还有特殊的元件需要学习。++

相关推荐
lichong95127 分钟前
Git 检出到HEAD 再修改提交commit 会消失解决方案
java·前端·git·python·github·大前端·大前端++
Tiny番茄27 分钟前
31.下一个排列
数据结构·python·算法·leetcode
小白学大数据2 小时前
实战:Python爬虫如何模拟登录与维持会话状态
开发语言·爬虫·python
FriendshipT2 小时前
目标检测:使用自己的数据集微调DEIMv2进行物体检测
人工智能·pytorch·python·目标检测·计算机视觉
平谷一勺2 小时前
数据清洗-缺失值的处理
python·数据分析
末世灯光2 小时前
时间序列入门第一问:它和普通数据有什么不一样?(附 3 类典型案例)
人工智能·python·机器学习·时序数据
开心-开心急了2 小时前
Flask入门教程——李辉 第一、二章关键知识梳理(更新一次)
后端·python·flask
锦***林2 小时前
用 Python 写一个自动化办公小助手
开发语言·python·自动化
www.022 小时前
微信克隆人,聊天记录训练专属AI(2.WeClone训练模型)
人工智能·python·微信·聊天克隆人·微信克隆人
胜天半月子2 小时前
性能测试 | 性能测试工具Jmeter的认识和基础使用
测试工具·jmeter·性能测试