【问题标题】:Python Selenium How to Run Continuously?Python Selenium 如何连续运行?
【发布时间】:2022-11-10 19:36:18
【问题描述】:

driver2.find_element("xpath", f'//*[text()="{entry1.get()}"]').click() 出现错误时,我想重新启动我的程序我该怎么做,请帮助我

class a(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        bot()
        while True:
            bot()

    def bot():
    global driver2
    global chrome_options2
    options2 = {
        'proxy': {
            'http': random.choice(proxylist),
        }
    }
   
    chrome_options2 = uc.ChromeOptions()
   
    driver2 = uc.Chrome(
        options=chrome_options2,
        seleniumwire_options=options2,
        use_subprocess=True,
    )
    url = 'https://www.google.com'
    again = True
    while again:
        try:
            driver2.get(url)
            driver2.find_element("name", "q")
            time.sleep(1)
            driver2.find_element("name", "q").send_keys(entry.get())
            time.sleep(1)
            driver2.find_element("name", "q").send_keys(Keys.ENTER)
            time.sleep(1)
            driver2.find_element("xpath", f'//*[text()="{entry1.get()}"]').click()
            again = False
        except:
            pass
    time.sleep(5)
    driver2.execute_script("window.scrollTo(0, 800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, -800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, 800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, -800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, 800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, -800);")
    time.sleep(1)
    driver2.quit()

【问题讨论】:

    标签: python selenium while-loop selenium-chromedriver try-catch


    【解决方案1】:

    您可以将要重复的代码块放入 try-except 块内,直到它成功为止 while 循环内。如下:

    url = 'https://www.google.com'
    again = True
    while again:
        try:
            driver2.get(url)
            driver2.find_element("name", "q")
            time.sleep(1)
            driver2.find_element("name", "q").send_keys(entry.get())
            time.sleep(1)
            driver2.find_element("name", "q").send_keys(Keys.ENTER)
            time.sleep(1)
            driver2.find_element("xpath", f'//*[text()="{entry1.get()}"]').click()
            again = False
        except:
            driver2.close()
    time.sleep(5)
    driver2.execute_script("window.scrollTo(0, 800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, -800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, 800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, -800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, 800);")
    time.sleep(1)
    driver2.execute_script("window.scrollTo(0, -800);")
    time.sleep(1)
    driver2.quit()
    

    你的代码应该改进。在每个代码步骤之后设置 1 秒的硬编码延迟不是正确的方法。

    【讨论】:

    • 非常感谢,但是当它真正打开新的 chrome 页面并且 selenium 不起作用时,我想在 2 个选项中重新启动 chrome,因为我每次都更改代理。再次感谢你
    • 我不明白你,对不起。这是否解决了您的问题或仍然没有?如果不是 - 究竟是什么问题?
    • 您的代码有效,但不会关闭当前页面并打开一个新的 chrome 选项卡并打开 2 个 chrome 选项卡并且不响应新的 chrome 选项卡它在主页上等待并且不搜索 google。我希望它关闭页面并开始新页面我的程序打开新的 chrome 选项卡我只想工作 1 页。对不起,我的英语不好。感谢您的帮助。我分享我的完整代码我的第一篇文章
    • 好的,如果我理解你,你所缺少的只是关闭选项卡以防click() 不起作用,只有在它正常工作时才离开,以便我们可以继续使用该选项卡?如果是这样,您只需将driver2.quit() 放在except: 块内。
    • 谢谢,但chrome标签关闭但没有重新打开我该如何修复它。再次感谢
    猜你喜欢
    • 2021-05-23
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2017-05-18
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多