javascript - /Python / [Selenium 我想创建一个“图(请检查)”的无限循环
问题描述
前提/你想要达到的目标
我打算构建一个执行无限循环的程序,如下所示。
用字母表示。这个无限循环首先确定网页上是否存在“元素A”。以下两点是元素A的特点。 (1)可能同时存在多个。(2) 一个元素A可以一键点击。一旦你点击它刷新浏览器,它就会消失。
如果有元素A,点击元素A,然后运行图中橙色程序刷新浏览器。之后,再次确定元素A的存在或不存在。如果没有元素 A,则显示“未找到元素 A”并刷新浏览器。之后,再次确定元素A的存在或不存在。(*) 实际上,我们计划构建一个程序“如果没有元素A,则更新浏览器而不显示”未找到元素A“然后再次确定元素A的存在与否”。在这个问题中,我目前正在添加此代码以确保程序正常运行。
此外,在源代码中使用“for”编写了“如果可以获取元素A则工作的程序”,以便可以处理下图中同时存在多个元素A的情况。详情请看当前源码一栏。 两圈无限循环
当前状态
我正在使用下面的代码,但我可能正在遵循代码中显示的路径,并且我没有得到无限循环。
def Orange():
# What to do after getting and clicking element A
# When this code is executed, if element A can be obtained, the function Orange () is executed, and if element A cannot be obtained, Not Found Element A is displayed and the browser is updated.
driver.refresh()
time.sleep(1)
GetA = driver.find_elements_by_css_selector(".AAAAA")
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
else:
pass
time.sleep(4)
print("Not Found Element A")
driver.refresh()
我试过的
def LOOP():
while GetA == True:
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
driver.refresh()
time.sleep(1)
GetA = driver.find_elements_by_css_selector(".AAAAA")
while GetA == True:
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
else:
LOOP()
当我组装上面的代码并执行它时,显示“RecursionError: maximum recursion depth exceeded while calling a Python object”
我还想过从浏览器更新开始创建一个无限循环,但它只是更新了浏览器。
if driver.refresh():
time.sleep(1)
GetA = driver.find_elements_by_css_selector(".AAAAA")
for i in GetA:
GetA[0].click()
Orange()
driver.refresh()
else:
driver.refresh()
else:
driver.refresh()
补充信息(固件/工具版本等)
解决方案
推荐阅读
- javascript - 你可以在 Code.org JS(游戏实验室)中重置 World.frameCount 吗?
- java - 是否可以在没有堆栈跟踪的情况下抛出自定义异常?
- python-3.x - Crontab 无法调用通过 python subProcess 使用的 mailx
- python - 你如何评估一个字符串并且你不能评估的单词保持不变?
- asp.net-web-api - 带有 JWT 身份验证签名图像或文件 URL 的 Blazor ASP.NET Core
- dataweave - 通过 mulesoft 插入多个 XML 标签作为 Salesforce 记录
- mysql - 在 MySQL/8 for Windows 中禁用二进制日志
- python - Python - If 语句:Elif 或 Else 不适用于密码生成代码
- websocket - 如何在 flask_socketio 中列出所有连接的客户端?
- java - 预填充数据库在android中不起作用