首页 > 解决方案 > /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()

补充信息(固件/工具版本等)

标签: javascriptpythonselenium

解决方案


推荐阅读