【问题标题】:Python3 goto assignment as infinite while-loop? [closed]Python3 goto赋值为无限while循环? [关闭]
【发布时间】:2019-01-16 08:22:37
【问题描述】:

我是 python 新手,不明白如何在 python3/selenium 中分配“goto”标签。我知道没有,但是我怎样才能编写我的脚本,以便它不会无法执行无限的while循环(这里用伪代码编写)?:

while True:
    for-loop1
        something happens

    for-loop2
        something else is happening

    for-loop3
        even more stuff happens

    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li:not(.disabled)>a[data-page='next']"))).click() # checks for other page
        print("There is another page.")
        time.sleep( 2 ) # wait to load
    except NoSuchElementException:
        print("No further page exists. Bye, bye!")
        break

driver.quit()

我收到以下错误消息:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li:not(.disabled)>a[data-page='next']"))).click() # checks for other page
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

编辑:

问题解决了:

driver.find_element_by_css_selector("li:not(.disabled)>a[data-page='next']").click()

【问题讨论】:

    标签: python-3.x loops selenium-webdriver goto


    【解决方案1】:

    如果我正确理解您的问题,您根本不需要使用“goto”。你可以通过使用一个简单的 while 循环来解决这个问题。

    while True:
        for things in loop1:
            do stuff
    
        for things in loop2:
            do more stuff
    
        if there_are_no_more_pages:
            break
    

    【讨论】:

    • 嗨,Uisdean Chapped,谢谢你的回答。问题是我不知道我有多少页,直到我点击下一个按钮。如果没有下一步按钮,脚本将完成。所以,我认为不管页数我只有两个for循环,然后检查我是否可以点击网站上的另一个页面,但我不知道如何实现它。有什么想法吗?
    • @TilHund 如果您有更多页面并等待用户输入,添加下一个按钮会怎样?这样,无论您的页数如何,您都可以执行 for 循环,并在没有更多页面可显示时跳出循环。
    • 嗨 Uisdean Chapped,我现在已经尝试了你的无限 while 循环(相应地更新了原始帖子),但在我检查“下一步”按钮是否存在的地方出现错误:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li:not(.disabled)>a[data-page='next']"))).click() # checks for other page File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:
    • 我已经超出了我的深度 w.r.t. WebDriver 的东西,因此,我真的不能帮助你。但是,由于 wait for element_to_be_clickable 由于超时而失败,它可能会等待未发生的单击,或者只是无法加载元素。但实际上,在这一点上我猜,对不起。
    • 不用担心,我自己发现了最后一个问题,但是,您帮助我解决了我最初的问题,即发现您可以进行无限循环。再次感谢您!
    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2023-01-25
    • 2013-09-25
    • 2011-07-12
    • 2013-02-17
    • 2018-04-30
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多