Python IF语句无法识别其他内容:

时间:2017-04-12 19:33:59

标签: python selenium webdriver

我正在尝试验证是否显示了一行。我正在使用python和Selenium。这是我到目前为止所尝试的内容

    try:
        row = self.driver.find_element_by_xpath(<row6>).is_displayed()
        if row is False:
            print("button is not displayed. Test is passed")
        else:
            do stuff
    except:
        NoSuchElementException

我正在努力实现以下目标: 如果页面#2具有行&lt;页面#1将仅显示按钮。 6.

我仍有逻辑写条件 - &gt;如果row为False :.但是,如果字符串为false,它应至少打印出来。

目前,else:在我的代码中无效。没有错误显示但是尝试:退出NoSuchElementException。

更新:我还尝试了以下代码,我在第1页上验证按钮是否显示,转到第2页并验证是否存在第6行。如果显示按钮,则有效。如果未显示按钮,则会抛出错误:NoSuchElementException:消息:无法找到元素:

    try:
        button = self.driver.find_element_by_xpath(PATH)
        if button.is_displayed():
            do stuff
            row = self.driver.find_element_by_xpath(<row6>)
            if row.is_displayed():
                do stuff
            else:
                do stuff
    except:
        button = self.driver.find_element_by_xpath("PATH").is_displayed()
        if button is False:
            print("button is hidden. Test is passed")

关于如何使这项工作的任何建议?

2 个答案:

答案 0 :(得分:0)

也许没有找到隐藏的row6并引发异常。

你的except的语法是错误的:它会捕获所有异常,然后对NoSuchElementException对象不做任何事情。

你的意思是:

except NoSuchElementException:
    #do something when no row6 found 

答案 1 :(得分:0)

我不知道Selenium,但听起来这里可能有多个异常,并非所有相同的类型,而不是您可能期望它们发生的地方。例如,row.is_displayed()评估为True时一切正常,但抛出异常 - 这表明row可能是None或其他意外结果。我粗略地看了docs,但我马上看不到。

无论如何 - 要调试它,请尝试将代码的不同部分放入try-except块:

try:
    button = self.driver.find_element_by_xpath(PATH)
    if button.is_displayed():
        do stuff
        try: 
            row = self.driver.find_element_by_xpath(<row6>)
        except:  # <-- Better if you test against a specific Exception!
            print(" something is wrong with row! ")
        try:
            if row.is_displayed():
                do stuff
            else:
                do stuff
        except:  # <-- Better if you test against a specific Exception!
            print( " something is wrong with using row!" )
except:  # <-- Better if you test against a specific Exception!
    button = self.driver.find_element_by_xpath("PATH").is_displayed()
    if button is False:
        print("button is hidden. Test is passed")

此外,尝试在每个try-except中放入最少量的代码,以便您知道异常的来源。