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

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

相关推荐
A__tao15 分钟前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢19 分钟前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
迷藏49435 分钟前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
明日清晨1 小时前
python扫码登录dy
开发语言·python
bazhange1 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
人工干智能2 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
unicrom_深圳市由你创科技2 小时前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
小敬爱吃饭2 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
宸津-代码粉碎机2 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
k7Cx7e2 小时前
Thinkphp6在Postman中接收不到Post参数的解决办法
测试工具·postman