当前位置: 首页 > 知识库问答 >
问题:

使用xpath,按值查找没有值属性的输入字段

巩枫
2023-03-14

给定此html:

<input id="test" value="my text" />

使用xpath很容易获得输入元素的句柄。类似于:

input[@value="my text"]

但如果原始html如下所示:

<input id="test" />

如果你在浏览器中查看,它仍然有“我的文本”——因为这是用javascript添加的,如下所示:

document.getElementById('test').value = 'my text';

在fiddle中,您可以看到输入字段中有单词“my text”,但没有value属性:https://jsfiddle.net/justinwyllie/5dsxa8mc/

如何选择此元素?只有xpath-没有jQuery。

共有1个答案

袁秦迟
2023-03-14

考虑到这是Python Selenium,我将采用以下方式进行处理:

inputs = driver.find_elements_by_tag_name("input")  # TODO: improve the locator to get less input elements
input_elm = next(input_elm for input_elm in inputs 
                 if input.get_attribute("value") == "my text")

请注意,get\u属性(“value”)将获取的计算值。属性,这正是解决问题的原因。

另请注意,如果没有匹配项,则next()会引发异常停止迭代(StopIteration)-您可以通过尝试/例外(try/except)处理该异常,或者提供默认值:

input_elm = next((input_elm for input_elm in inputs 
                 if input.get_attribute("value") == "my text"), None)
 类似资料:
  • 我有以下XML。 我在http://chris.photobooks.com/xml/default.htm上查看了它,它显示xpath无效,不确定问题出在哪里。

  • 我来问一个我觉得以前没有人问过的问题,可能会得到一些有趣的答案:) 我目前正在研究一些Java代码,其目标是: 接收

  • 我正在使用C#和Selenium Web驱动程序。问题是我找不到一个没有ID值的开始按钮。 我为该对象找到的唯一标识符是'value=“74”‘文本。 按钮的HTML如下所示: driver.findElement(by.xpath(“(//input[@name='PRODUCT_ID'][@value='74'])”)).click(); 提前致谢

  • 问题内容: 我有一些如下所示的元素: 如何向属性值为(零)的元素添加类? 我尝试了许多不同的解决方案,但没有任何效果。一个例子: 任何的想法? 问题答案: 使用属性等于选择器 它在树上起作用 获取当前匹配元素集中每个元素的后代,并通过选择器,jQuery对象或元素进行过滤。

  • 检索给定节点resp的所有属性名(而不是属性值!)的Xpath表达式看起来如何。xml标签? 假设以下XML文档: Xpath//title/@*会选择“eng,fr,easyreading”,但哪个Xpath会选择“lang,lang,type”?

  • 问题内容: 在redis中,我将对象存储在一个排序集中。在我的解决方案中,能够按日期运行范围内的查询很重要,因此我存储的项目的得分为每个项目的时间戳,例如: 但是,在其他情况下,我需要根据其ID在集合中找到一个项目。我知道我不能像对待nosql db那样仅查询此数据结构,但是我尝试使用,这是行不通的。 它返回;“空列表或集” 也许我需要序列化不同吗?我已经使用Json.Net进行了序列化。 我如何