当前位置: 首页 > 知识库问答 >
问题:

Playwright Python.-如何检查元素是否隐藏

公良云
2023-03-14

我目前正在使用playright/Python/Pytest,我正在尝试将用户登录作为特定类型的用户角色,然后检查各种按钮是否可见或隐藏。

我正在使用页面对象,并为每个按钮元素设置了属性,即。

    @property
    def manage_placements_button(self):
    return self.page.wait_for_selector("xpath=//h3[normalize-space()='Manage Placements']")
    
    @property
    def my_holiday_button(self):
    return self.page.wait_for_selector("xpath=//h3[normalize-space()='My Holiday']")

    @property
    def my_payments_button(self):
    return self.page.wait_for_selector("xpath=//h3[normalize-space()='My Payments']")

    @property
    def my_compliances_button(self):
    return self.page.wait_for_selector("xpath=//h3[normalize-space()='My Compliances']")

然后我使用一个验证方法的可见按钮:

    def verify_candidiate_can_see(self):
    result = self.manage_timesheets_button.is_visible()
    result = self.my_payments_button.is_visible() and result
    result = self.my_holiday_button.is_visible() and result
    result = self.my_compliances_button.is_visible() and result
    return result

这可以很好地工作,并将测试中的断言传递回true。

然后,我尝试使用以下方法对隐藏值执行相同操作:

    def verify_candidiate_cant_see(self):
    result = self.manage_placements_button.is_hidden()
    return result

但是我得到了这个错误——等待选择器“xpath=//h3[normalize-space()='manageplacements']”可见

以下是测试:

  @pytest.mark.order(2)
  def test_candidate_login(context, env):
  page = context.new_page()
  home_page = HomePage(page)
  login_page = LoginPage(page)
  login_page.navigate(env)
  login_page.login(env, "Candidate")
  result1 = home_page.verify_candidiate_can_see()
  assert result1 == True
  result2 = home_page.verify_candidiate_cant_see()
  assert result2 == True
  context.close()

我假设我添加了is_hidden它是可以的,因为元素不存在于页面上,但它似乎仍在等待它可见。任何帮助都将不胜感激

共有1个答案

谭玉泽
2023-03-14

您可以等待选择器被隐藏:

return self.page.wait_for_selector("xpath=something", state="hidden")

当元素不存在时将返回,并等待其在页面上隐藏。

请参见此处以供参考。

 类似资料:
  • 问题内容: 是否有可能切换元素的可见性,使用功能,或? 你会如何测试一个元素是否还是? 问题答案: 由于问题涉及单个元素,因此此代码可能更合适: 与twernt的建议相同,但适用于单个元素。它与jQueryFAQ中推荐的算法匹配 我们使用jQueryis()与另一个元素,选择器或任何jQuery对象一起检查选定的元素。此方法遍历DOM元素以找到匹配项,该匹配项满足传递的参数。如果存在匹配项,则返回

  • 问题内容: 我不知道如何确定存在于json数组中的元素是否为null。要检查jsonObject本身是否为null,只需使用: 但是,当对象是一个数组并且我想检查该数组的元素之一是否为null时,则不起作用: 数组的元素上也没有isNull方法。如何检查jsonarray中的值是否为null?知道我正在从javascript传递空对象可能会有所帮助。从javascript以json格式传递null

  • 我将一些代码从Gson改为Jackson,在那里我必须检查当前元素的类型是否是原语。 我可以用Gson做这样的事情: 在Jackson中,Json节点类型是

  • 问题内容: 在Swift中,如何检查数组中是否存在元素?Xcode没有针对,,或的任何建议,并且快速搜索本书不会发现任何结果。知道如何检查吗?我知道有一种方法可以返回索引号,但是有没有一种方法可以返回像ruby一样的布尔值? 我需要的示例: 问题答案: 斯威夫特2、3、4、5: 是(用于元素序列的) 协议扩展方法 ,而不是早期版本中的全局方法。 备注: 该方法要求序列元素采用协议。 如果序列元素是

  • 问题内容: 示例:我正在检查是否存在像这样的数组元素: 但是,我不断收到此错误: 当然,我第一次想要实例时,$ instances不会知道密钥。我想我对可用实例的检查是错误的? 问题答案: 您可以使用语言构造或函数。 应该更快一些 (因为它不是函数) ,但是如果元素存在并且具有value,则将返回false 。 例如,考虑以下数组: 和这三个测试,依赖于: 第一个会得到您( 该元素存在,并且不为n

  • 在Swift中,如何检查数组中是否存在元素?Xcode没有关于、或的任何建议,并且在这本书中快速搜索没有任何结果。知道怎么查这个吗?我知道有一个方法返回索引号,但是有没有一个方法像Ruby的那样返回一个布尔值? 我需要的示例: