【问题标题】:Cannot get input by its value using XPath无法使用 XPath 通过其值获取输入
【发布时间】:2016-03-14 04:06:38
【问题描述】:

我有多个 HTML <input> 元素,如下所示:

<input type="text" class="information">
<input type="text" class="information">
<input type="text" class="information">

在这些输入元素中输入不同的文本(例如“hello”“hi”“hey”)并保存后,我可以使用element.getAttribute("value") 打印出它们的值,即“hello”“hi”“hey” .

但是,当我尝试使用 XPath 抓取这个输入元素时

//input[@class='information' and @value='hello']
//input[@class='information' and @value='hi']
//input[@class='information' and @value='hey']

它不起作用(无法用表达式识别元素)。知道为什么会发生这种情况,或者在这种情况下如何使用 XPath 获取输入元素吗?提前致谢!

【问题讨论】:

  • 您应该能够在 xpath 中没有 value 属性的情况下继续,即使用 //input[@class='information']
  • 对不起,我忘了提,我的 html 中有多个输入看起来完全一样,我正在尝试根据需要单独输入。
  • 您想编辑问题并添加 html 吗?
  • 我编辑了描述,希望它现在更有意义?谢谢
  • 你期望的输出是什么?

标签: java html selenium xpath


【解决方案1】:

也许不是最好的方法,但是

尝试通过 Xpath 找到它,如下所示:

xpath=(//input[@type='text'])[2]

[2] 是框号 (1/2/3)。找到该框后,您可以访问它的值。

IWebElement box2 = FindElement(By.XPath('//input[@type='text'])[2]'));
box2.getAttribute();

更好的方法可能是尝试选择 div 的“ :nth-child(n) ”。也许谷歌了

【讨论】:

    【解决方案2】:

    正如 nullpointer 所写,您应该首先使用 //input[@class='information'] 获取元素列表,然后使用 getAttribute("value") 仔细查看每个元素。

    您将无法通过 XPath 找到这些值,因为它们是在加载页面后输入的。为了使用 XPath 找到 value 属性,它们必须与页面一起加载,就像在 &lt;input type="text" value="hello"&gt; 中一样,但您的情况并非如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多