WATIR - 如何使用多个标识符定位元素
WATIR - How can I locate an element using more than one identifier
我的测试正在尝试检查是否显示错误消息或成功消息。
两条消息的 CSS 是:
span id="APEX_SUCCESS_MESSAGE" data-template-id="20696621797766286675_S" class="apex-page-success u-hidden"
span id="APEX_ERROR_MESSAGE" data-template-id="20696621797766286675_E" class="apex-page-success u-hidden"
我试过使用 id 来定位它们(如果 browser.span(:id=> "APEX_SUCCESS_MESSAGE").exists?)但问题是它同时处理错误和成功消息与仅使用 id 相同。我猜我需要使用 data-template-id="20696621797766286675_S" 找到它们,但我不知道如何在我的代码中实现它而不会出错。
有什么想法吗?CSS for the messages
鉴于每个 span
都有一个唯一的 ID,我希望只找到 1 个元素。我不希望需要第二个标识符。
我猜问题出在元素的使用方式上,特别是 #exists?
的用法。 #exists?
验证元素是否出现在 HTML 中。它不会验证元素是否对用户实际可见。
鉴于标记屏幕截图,看起来这两个元素可能总是包含在 HTML 中,但是通过切换“u-隐藏”class,它们被隐藏或显示给用户。我认为您真正想要的是使用 #present?
,它检查元素是否对用户实际可见:
if browser.span(:id=> "APEX_SUCCESS_MESSAGE").present?
要回答您关于使用多个标识符的问题,标识符是 Hash
。您可以添加其他项目。请注意,对于 data-* 属性,它们需要将破折号替换为下划线:
browser.span(id: "APEX_SUCCESS_MESSAGE", data_template_id "20696621797766286675_S")
我的测试正在尝试检查是否显示错误消息或成功消息。
两条消息的 CSS 是:
span id="APEX_SUCCESS_MESSAGE" data-template-id="20696621797766286675_S" class="apex-page-success u-hidden"
span id="APEX_ERROR_MESSAGE" data-template-id="20696621797766286675_E" class="apex-page-success u-hidden"
我试过使用 id 来定位它们(如果 browser.span(:id=> "APEX_SUCCESS_MESSAGE").exists?)但问题是它同时处理错误和成功消息与仅使用 id 相同。我猜我需要使用 data-template-id="20696621797766286675_S" 找到它们,但我不知道如何在我的代码中实现它而不会出错。
有什么想法吗?CSS for the messages
鉴于每个 span
都有一个唯一的 ID,我希望只找到 1 个元素。我不希望需要第二个标识符。
我猜问题出在元素的使用方式上,特别是 #exists?
的用法。 #exists?
验证元素是否出现在 HTML 中。它不会验证元素是否对用户实际可见。
鉴于标记屏幕截图,看起来这两个元素可能总是包含在 HTML 中,但是通过切换“u-隐藏”class,它们被隐藏或显示给用户。我认为您真正想要的是使用 #present?
,它检查元素是否对用户实际可见:
if browser.span(:id=> "APEX_SUCCESS_MESSAGE").present?
要回答您关于使用多个标识符的问题,标识符是 Hash
。您可以添加其他项目。请注意,对于 data-* 属性,它们需要将破折号替换为下划线:
browser.span(id: "APEX_SUCCESS_MESSAGE", data_template_id "20696621797766286675_S")