【问题标题】:if else loop on Python. Checking a class name with Seleniumif else 在 Python 上循环。使用 Selenium 检查类名
【发布时间】:2017-08-27 02:59:11
【问题描述】:

我有这个预约系统,我必须等到链接可用。如果此链接可用,请单击它。如果不返回和转发(因为页面不允许我重新加载)。并再次检查直到可用。

while True:

    if driver.find_element_by_class_name("linkButton"):

            #do somthing



    else:

             driver.back()
             driver.forward()
             #check again.

程序不会抛出任何错误,但是当我强制 iffalse 时,else 什么也不做。

我无法使用不可用的链接检查它,因为在页面中直到可用这就是为什么我强制 if 成为 false

【问题讨论】:

    标签: python selenium if-statement pycharm


    【解决方案1】:

    首先,find_element_*() 方法不返回 true/false,它们要么返回 WebElement 实例(这是真的),要么抛出 NoSuchElementException 异常(或其他异常)。

    存在性检查通常通过find_elements_*() 方法完成,如果找不到元素,则返回一个空列表,这是错误的:

    while True:
        if driver.find_elements_by_class_name("linkButton"):
            # do something
        else:
            driver.refresh()
    

    请注意,我认为您只是想refresh() 页面而不是来回前进。

    而且,您还应该在尝试之间添加一些时间延迟。

    【讨论】:

    • 是的 .. 但我无法让 selenium 找到元素 .. 我尝试使用 xpath driver.find_elements_by_xpath(".//[@id='ctl00_ContentPlaceHolder1_acc_Calendario1_myCalendario1']/table/tbody/tr[6]/td[1]/input")
    猜你喜欢
    • 2021-08-02
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2014-06-07
    相关资源
    最近更新 更多