如何在 python 中验证按钮的可见性



>我正在尝试验证按钮元素是否未显示在UI上。代码由开发人员用 Java 脚本编写。我正在使用Selenium Webdriver和Python编写自动化脚本。如果启用了该按钮,我可以看到代码中添加li标签。但是,如果按钮被禁用,当我从 UI 检查按钮时,按钮的代码就会消失(F12->检查元素(。

目前,我的代码如下所示

def delete_btn_disabled(self):        
try:
button = self.driver.find_element(*Elements.delete_btn).is_displayed()
if button is True:
return True
except NoSuchElementException:
return False 

我的测试用例如下:

if spage.delete_btn_disabled() is False:
print("Test passed")
else:
print("Test failed")

有没有更好的方法来解决这个问题?抛出NoSuchElementException看起来有点脏(如果我错了,请纠正我(,我也必须为其他测试用例处理这种类型的代码。

我已经用谷歌搜索过这个,但似乎找不到这个问题的正确解决方案。

任何帮助,不胜感激。

is_displayed

不等于is_visible

您仍然无法确定该按钮在 UI 中是否可见,即使它显示在屏幕外的某个位置也是如此。所以它仍然不可点击。

使用.find_elements()查看元素是否存在。如果返回的列表为空,则表明该元素不存在(或显示(。如果它不为空,请选中第一个元素上的.is_displayed()

def delete_btn_disabled(self):        
button = self.driver.find_elements(*Elements.delete_btn)
if button:
return button[0].is_displayed()
else:
return False

Selenium使用期望和等待来最好地管理这些条件。这将确保如果它不能满足您的期望,它也会超时。您可以使用visibility_of方便的方法等待可见性,如下所示:

from selenium.webdriver.support import expected_conditions as EC 
element = WebDriverWait(driver, 10).until(EC.visibility_of((By.ID, 'id_1')))

这里有一个完整的期望方法列表。

最新更新