gpt4 book ai didi

javascript - Selenium - 能够获取在网页中呈现和显示的 Webelements 列表

转载 作者:行者123 更新时间:2023-11-28 15:23:54 25 4
gpt4 key购买 nike

我正在寻找一种解决方案,以仅获取网页上显示的网络元素。例如,对于网页 https://login.yahoo.com/ ,只有少数 Web 元素呈现给浏览器(1 个输入框、7 个链接、1 个按钮等)

当我试图只获取这些网络元素时,我得到的只是我集合中的大量网络元素。

例如,当我查询 HTML 时,我得到了 select web 元素

<select type="select" name="countryCodeIntl" aria-required="true" role="combobox" aria-multiline="false" aria-labelledby="country-code-lbl-aria" disabled="">
<option role="option" data-code="+93" value="AF">Afghanistan ‪(+93)‬</option>
</select>

此 Select 元素在网页中不可用。不确定如何在查询 DOM 时忽略此 Web 元素

我尝试了以下方法

 1. Displayed==true ( Selenium funcitonality )

2. IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
Boolean elementVisible = (Boolean)js.ExecuteScript("return arguments[0].offsetWidth > 0", myCurElement);
Boolean elementVisible1 = (Boolean)js.ExecuteScript("return arguments[0].offsetHeight > 0", myCurElement);
Boolean elementVisible2 = (Boolean)js.ExecuteScript("return arguments[0].getClientRects().length > 0", myCurElement);
if (elementVisible ==true&& elementVisible1== true && elementVisible2 == true)
{}

上述两种方法都返回网页中不可见的元素。

关于如何仅获取浏览器中人眼可见的 HTML 网络元素的任何指示?这可以使用 javascript 完成吗?

非常感谢您的帮助。

最佳答案

当你试图to get only the web elements which is displayed on a web page不向我证明是有效的 Business Case 。一个典型的 Testcase 可能希望您验证特定元素(按钮、文本等)是否为 displayed还是不是。

正如您提到的 for the web page https://login.yahoo.com/, there is only a few web elements which are rendered to the browser ( 1 input box, 7 links, 1 button etc ) .是的,您认为它是 End User 。在这里你错过了那些(1 个输入框、7 个链接、1 个按钮等)与 property 一起使用的事实。 <强> visible 设置为 value <强> true 。因此,当您访问 URL 时会看到它们.

下一个当你try to get only these web elements, all I am getting is a large number of web elements in my collection由于不同的原因:

  1. 要查找/搜索特定元素,您需要借助定位器(idnamelinkTextcssxpath)。所有这些定位器对于 HTML DOM 上的每个元素都是唯一的.因此,如果您尝试使用 xpathcss确保您构建的定位器在 HTML DOM 上标识了唯一元素(唯一元素集) .
  2. HTML DOM 上的所有元素不一定会出现在网站上。那是因为,一些元素被隐藏起来,所以它们不会显示在网页上以限制End Users。对它们执行任何操作。这些元素虽然在网站中不可见,但确实以 Hidden Elements 的形式存在。

结论:

所以 When I try to get only these web elements考虑通过各自的定位器识别每个元素,该定位器在 HTML DOM 上唯一标识元素.一旦确定,您可以对它们执行任何所需的操作( sendKey()click() 等),直到它们附加到 HTML DOM 上。

关于javascript - Selenium - 能够获取在网页中呈现和显示的 Webelements 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45625756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com