无法通过 XPath 选择器为没有名称或 ID 的类型文本找到元素

Posted

技术标签:

【中文标题】无法通过 XPath 选择器为没有名称或 ID 的类型文本找到元素【英文标题】:Unable to find Element via XPath Selector for type text with no name or Id 【发布时间】:2021-12-21 00:25:39 【问题描述】:

Chrome 检查

C#代码

IWebElement Search =
   driver.FindElement(By.XPath("//*[@placeholder='search' and
   @type='text']"));
       Actions actions_Search = new Actions(driver);
       actions_Search.MoveToElement(Search).Click().SendKeys("ABCDEFG").Perform();

【问题讨论】:

【参考方案1】:

如果我们在html DOM 中有唯一条目,请检查dev tools(谷歌浏览器)。

你应该检查的xpath:

//input[contains(@class,'searchbox') and @placeholder='search' @type='text']

检查步骤:

Press F12 in Chrome -> 转到element 部分 -> 做一个CTRL + F -> 然后粘贴xpath 看看,如果你想要的element 用@ 得到高亮 987654329@匹配节点。

如果我们有唯一的条目 1/1,那么您可以使用以下代码:

IWebElement elem = driver.FindElement(By.Xpath("//input[contains(@class,'searchbox') and @placeholder='search' @type='text']")).SendKeys("ABCDEFG");

我不确定你为什么需要一个动作类。

【讨论】:

感谢您的帮助,您需要在此@placeholder='search' @type='text' 之间再添加一个【参考方案2】:

大多数情况下,你无法通过 xpath 找到元素但元素存在,可能是因为它存在于不同的 iframe 中

通过代码(在 chrome 控制台中)从***元素检查浏览器中元素的位置:

$x("//input")

然后如果没有找到,像这样切换到不同的 iframe:

然后在你的代码中使用 iframe 开关

【讨论】:

是的,这种情况也是正确的,所以投了赞成票

以上是关于无法通过 XPath 选择器为没有名称或 ID 的类型文本找到元素的主要内容,如果未能解决你的问题,请参考以下文章

获取span web元素的Xpath

获取没有特定祖先 xml xpath 的节点

是否可以让 Qt Creators Ui 设计器为其无法识别的类创建插槽?

jQuery 中的 DOM 选择器,用于没有 ID 或 CLASS 名称标签的元素

XPath 通过嵌套选择节点(大多数嵌套节点减一)

jQuery:通过没有ID的标签名称标记(选择)内容文本