我有一个 div 类,它的 id 为 display:none。我需要从 id 中获取文本。
我尝试过使用 javascript 执行器。但我没有从 ID 中获取文本值。
SelenideElement element = $$("[class*=abc]");
JavaScriptExecutor js = (JavaScriptExecutor) driver;
js.executeScript("return arguments[0].innerHTML;", element);
这是 HTML 代码。文本的 test-id 被隐藏。
< div class = "abc 1frr">
<div class = "efg-ghj">
<div class = "kjs-w4ejd">
<div class = "dfdfdf_fjjks"></div>
<div class ="_s8js3244" test-id="aaa-bbb">Hello</div>
</div>
</div>
< div class = "abc 1frr">
<div class = "efg-ghj">
<div class = "kjs-w4ejd">
<div class = "dfdfdf_fjjks"></div>
<div class ="_s8js3244" test-id="aaa-bbb">How</div>
</div>
</div>
< div class = "abc 1frr">
<div class = "efg-ghj">
<div class = "kjs-w4ejd">
<div class = "dfdfdf_fjjks"></div>
<div class ="_s8js3244" test-id="aaa-bbb">are</div>
</div>
</div>
< div class = "abc 1frr">
<div class = "efg-ghj">
<div class = "kjs-w4ejd">
<div class = "dfdfdf_fjjks"></div>
<div class ="_s8js3244" test-id="aaa-bbb">You</div>
</div>
</div>
我期望输出为 Hello,How,are,You。由于元素隐藏,我看到除此 test-id 文本值之外的所有其他值。
如果有人能帮助我,我将不胜感激。
最佳答案
如果您想从属性中选择文本,请引用 Selenide 缩小搜索条件。现在我看到您正在传递 Selenium 元素集合($$)。当你尝试通过 id 查找时(如上所述),你也给出了一个集合。如果您想获取整个文本(您的期望),请引用更高的 div 类/id 并使用 $(higher_div_element).getText()
或 String needText = $("[class ='abc 1frr']").parent().getText();
提示:当有很多其他选择时,尽量不要将 Selenide 与 JS 混合使用。总是有可能使用 Selenium 化物获取元素文本或值。
为了给您更多建议,请发送 HTML 代码的更大快照(上面有一些属性)
如果您确实想使用 Selenium 化物集合(我不建议您获取文本),您可以简单地编写类似的内容:
int elementSize = $$("[test-id='aaa-bbb'").size();
- 你得到 4
现在只需创建一个 for 循环并将变量传递给:
$$("[test-id='aaa-bbb'").get(i).getText();
关于java - 如何获取显示文本:none element in selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370488/