在大量隐藏元素中返回可见 list_items 的最佳选择
best option for returning visible list_items in a large collection of hidden elements
我正在寻找有关如何从无序列表中获取 list_items 的最佳性能输入。我只想要可见的 list_items returned。
以下是我正在使用的 html 的示例
<div id="queue-body">
<ul id="queue-list">
<li class="message" style="display: none;">oculto</li>
<li class="message" style="display: none;">oculto</li>
<li class="message" style="display: none;">oculto</li>
<li class="message">vidljiv</li>
<li class="message">vidljiv</li>
<li class="message">vidljiv</li>
<li class="message">vidljiv</li>
</ul>
</div>
大约有 300 个 list_items,目前大约需要 19 秒才能显示 return 40 个
我在我的页面对象中使用以下内容
unordered_list(:queue_list, :id => 'queue-list')
def visible_queue_submissions
queue_list_element.list_items.find_all(&:visible?)
end
这是我的环境的堆栈
page-object 2.2.4
watir 6.10
selenium-webdriver 3.7.0
find_all(&:visible?)
会很慢,因为 Watir 必须为每个列表项进行电汇。为了使其更快,您需要选择一个不需要迭代的选择器。这通常意味着找到 Watir 可以组合到它的 XPath 构建器中的属性。
在这种情况下,可见元素没有样式属性。因此,您可以使用新的 presence/absence 定位器:
def visible_queue_submissions
queue_list_element.lis(style: false)
end
即使是这个小列表,我看到执行时间从 1.26 秒减少到 0.14 秒。
我正在寻找有关如何从无序列表中获取 list_items 的最佳性能输入。我只想要可见的 list_items returned。
以下是我正在使用的 html 的示例
<div id="queue-body">
<ul id="queue-list">
<li class="message" style="display: none;">oculto</li>
<li class="message" style="display: none;">oculto</li>
<li class="message" style="display: none;">oculto</li>
<li class="message">vidljiv</li>
<li class="message">vidljiv</li>
<li class="message">vidljiv</li>
<li class="message">vidljiv</li>
</ul>
</div>
大约有 300 个 list_items,目前大约需要 19 秒才能显示 return 40 个
我在我的页面对象中使用以下内容
unordered_list(:queue_list, :id => 'queue-list')
def visible_queue_submissions
queue_list_element.list_items.find_all(&:visible?)
end
这是我的环境的堆栈
page-object 2.2.4
watir 6.10
selenium-webdriver 3.7.0
find_all(&:visible?)
会很慢,因为 Watir 必须为每个列表项进行电汇。为了使其更快,您需要选择一个不需要迭代的选择器。这通常意味着找到 Watir 可以组合到它的 XPath 构建器中的属性。
在这种情况下,可见元素没有样式属性。因此,您可以使用新的 presence/absence 定位器:
def visible_queue_submissions
queue_list_element.lis(style: false)
end
即使是这个小列表,我看到执行时间从 1.26 秒减少到 0.14 秒。