Python IF语句可以';我不认识其他人:
我正在尝试验证是否显示行。我正在使用python和Selenium。这是我到目前为止所做的尝试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
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:该表达式不是合法表达式。很遗憾,这并不能解决我的问题。谢谢你的回复。我正在网上研究这个问题的解决方案。验证硒元素的“隐形性”似乎是一个非常常见的问题。