我正在尝试验证是否显示了一行。我正在使用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")
关于如何使这项工作的任何建议?
答案 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
中放入最少量的代码,以便您知道异常的来源。