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": "[email protected]",
    "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': '[email protected]',
 'number': '',
 'password': 'spiderbuf',
 'range': '50',
 'search': '',
 'time': '00:01:01',
 'username': 'Spiderbuf',
 'website': 'http://www.spiderbuf.cn'}

#之后
{'color': '#ff8c2f',
 'date': '',
 'email': '[email protected]',
 '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": "[email protected]",
    "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()

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

相关推荐
PXM的算法星球13 分钟前
【软件工程】面向对象编程(OOP)概念详解
java·python·软件工程
Humbunklung1 小时前
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRectF)
笔记·python·学习·pyqt
蹦蹦跳跳真可爱5891 小时前
Python----深度学习(基于DNN的吃鸡预测)
python·深度学习·dnn
JJ1M82 小时前
Git技巧:Git Hook,自动触发,含实战分享
git·python·自动化
拓端研究室TRL2 小时前
PyMC+AI提示词贝叶斯项目反应IRT理论Rasch分析篮球比赛官方数据:球员能力与位置层级结构研究
大数据·人工智能·python·算法·机器学习
小白用python3 小时前
pycharm无法创建venv虚拟环境
ide·python·pycharm
ImAlex3 小时前
开开心心放假回家,结果忘记老家wifi密码新买的手机连不上WiFi?不用慌,pywifi来拯救你。
python
曼诺尔雷迪亚兹3 小时前
Wireshark快速入门--对启动的后端程序进行抓包
网络·测试工具·wireshark
fantasy_44 小时前
LeetCode238☞除自身以外数组的乘积
java·数据结构·python·算法·leetcode
Tech Synapse4 小时前
零基础搭建AI作曲工具:基于Magenta/TensorFlow的交互式音乐生成系统
人工智能·python·tensorflow