Python IF语句可以';我不认识其他人:

Python IF语句可以';我不认识其他人:,python,selenium,webdriver,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 s

我正在尝试验证是否显示行。我正在使用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
试试看:
row=self.driver.find_element_by_xpath()。_是否显示()
如果行为False:
打印(“未显示按钮。测试通过”)
其他:
做事
除:
非接触性异常
我正在努力实现以下目标: 只有当第2页的行数小于6时,第1页才会显示一个按钮

我仍然需要为条件->if row为False:编写逻辑。但是,如果字符串为false,则至少应打印该字符串

目前,我的代码中的else:不起作用。没有显示错误,但try:在NoSuchElementException处退出

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

    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")
试试看:
button=self.driver.find\u元素\u by_xpath(PATH)
是否显示if按钮():
做事
row=self.driver.find_元素
如果显示了row.u():
做事
其他:
做事
除:
button=self.driver.find_元素_by_xpath(“路径”)。是否显示()
如果按钮为False:
打印(“按钮隐藏,测试通过”)

有没有关于如何完成此工作的建议???

可能找不到隐藏的
第6行
,并引发异常

except的语法是错误的:实际上,它将捕获所有异常,然后对
NoSuchElementException
对象不做任何操作

你是说:

except NoSuchElementException:
    #do something when no row6 found 

我不知道Selenium,但听起来这里可能有多个异常,不是所有的类型都是相同的,也不是您可能期望它们发生的地方。例如,当
row.is_display()
的计算结果为
True
时,一切都正常,但在其他情况下会引发异常-这向我表明
row
可能是
None
或其他一些意外结果。我粗略地看了一眼,但不能马上看清楚

无论如何-要调试此功能,请尝试将代码的不同部分放入
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")
试试看:
button=self.driver.find\u元素\u by_xpath(PATH)
是否显示if按钮():
做事
尝试:
row=self.driver.find_元素

除此之外:#你是否期望有东西循环<代码>如果
未启动循环。是。所以,若行为False:->按钮不显示,若行为True,则显示按钮。无论哪种方式,测试都是有效的。我对你的问题和你想要完成的事情感到非常困惑。如果第6行小于6行,则有一个按钮隐藏。我正在尝试验证按钮是否显示。为了验证这一点,需要显示不同页面中的整行,或者隐藏不同页面中的按钮。我希望我的解释是正确的。如果元素
row
不存在,人们会认为异常将被抛出到
row=self.driver.find\u element\u by\u xpath()
。也许它只是在你尝试访问它时抛出一个异常。可能需要将其放入自己的
try except
块中。感谢语法更正。但是,如果签入我的代码,变量
将保存在
try
语句中。如果它不存在并添加到
下,除了:
,selenium将显示3个不同的错误1)InvalidSelectorException:2)InvalidSelectorError:3)SyntaxError:该表达式不是合法表达式。很遗憾,这并不能解决我的问题。谢谢你的回复。我正在网上研究这个问题的解决方案。验证硒元素的“隐形性”似乎是一个非常常见的问题。