给定一个 bySelector 我如何获取此元素子元素的选择器
given a bySelector how can i get the selector of this element's child?
这是我的 Html:
<a class="info-button" data-voice-actions="["info", "more info"]" href="waze://?button=external_poi_info" id="info-button" onclick="window.location.href = this.href; return false;">
<span class="icon"></span>
<div class="btn-text">More Info</div>
</a>
我有一个by.org.openqa.selenium.By
选择器:
By.cssSelector("#main > div > div.footer > div > a")
我有时想与自身相关,一旦我想获取其文本,就像在其<div class="btn-text">More Info</div>
子元素中一样。
如何从我拥有的原始选择器中获取子元素的选择器?
(我泛泛而谈,因为这种情况对我来说重复了几次)
最终,这取决于应用程序的工作方式。下面假定您要查找的元素始终位于a
元素的直接子元素中,并且它始终具有 .btn_text
类。您可以像操作任何字符串一样操作选择器:
String parent_sel = "#main > div > div.footer > div > a";
String child_sel = parent_sel + " > div.btn_text";
两个字符串都可以传递给By.cssSelector
。如果我的假设不正确,请根据需要进行调整。例如,如果div
可以是a
的后代,但不一定是它的子代,则可以连接" div.btn_text"
以获取child_sel
。
我想获取其文本
如果您正在寻找可以为您提供文本的选择器,我会注意到没有选择器可以传递给findElement
以获取文本。此函数始终返回元素(或以复数形式使用时的元素列表)。您必须在获得的元素上使用getText()
。(如果你想知道:XPath通常可以选择文本,但当你通过Selenium使用它时不能。
如果我清楚地了解您面临的问题,那么您可以做两件事。
首先,写一个疯狂的选择器来找到它。
//a[@class='info-button']/..//div[.='More Info']
其次,找到父元素,然后从那里找到子元素
driver.findElement(By.cssSelector("#main > div > div.footer > div > a")).findElement(By.path("//div[.='More Info']")).something
您可以使用以下 xpath 找到"信息按钮":
//div[@class='footer']//a[@class='info-button']
要检索文本"更多信息",您可以使用以下 xpath:
//div[@class='footer']//div[.='More Info']
根据OP的评论进行编辑
使用 innerHTML/text 获取div 元素的 css 选择器可以是这样的:
#main > div > div.footer > div > a > div:nth-child(1)
它将第一个子元素"div"定位在相关的"a"元素下。
- React - 从 DOM 元素获取组件以进行调试
- 如何使用 JQuery 从相对元素获取 html 文本
- 从同一域上的 iframe 中的元素获取值
- 使用本机 Javascript 从 DOM 元素获取选择器字符串
- 使用jquery从另一个元素获取使用id的输入的id
- 如何从角度元素获取编译的节点值
- 如何为不同的元素获取不同的父类
- 从 jQuery 中的子元素获取父 tr 元素
- 当浮点部分为空时,从 JQuery 中的输入元素获取数字值不起作用
- 从 XML 元素获取文本
- 从音频元素获取音频样本
- 从所选元素 html 上方的元素获取属性值
- 使用 jQuery.data 从 dom 元素获取布尔值
- 如何通过jquery从某个元素获取部分文本
- 从输入元素获取表单和表单数据对象
- 从动态元素获取挖空视图的大小
- 从中继器循环中显示的子自定义元素获取正确的上下文.奥蕾莉亚
- 如何使用 JavaScript 或 JQuery 从输入类型=文件 html 元素获取文件名
- 从父元素获取 ID 并将它们放在数组中
- 尝试从选项元素获取 HTML