【问题标题】:Selenium, findelement, the entire <li>Selenium,findelement,整个<li>
【发布时间】:2016-09-14 17:24:51
【问题描述】:

我需要从包含单词“Produktgewicht”的网页中查找元素

这是我用来查找元素的代码:

String Weight=wd.findElement(By.xpath("//*[contains(text(), 'Produktgewicht')]")).getText();

这是网页的源代码:

<li>
    <b>
        Produktgewicht inkl. Verpackung:
    </b>
     6 Kg
</li>

我的代码的输出是 "Produktgewicht inkl. Verpackung:"

但我想要整个&lt;li&gt;

这是我想要的输出 "Produktgewicht inkl. Verpackung: 6 Kg"

我试过了

String Weight=wd.findElement(By.xpath("//*[contains(text(), 'Produktgewicht')]/following::li")).getText();

但它给了我下一个&lt;li&gt;

请帮帮我...... 在此先感谢:)

【问题讨论】:

  • &lt;ul class = 等于什么?

标签: jquery html css selenium xpath


【解决方案1】:

你可以试试这个方法:

//li[contains(., 'Produktgewicht')]

上面应该返回包含文本“Produktgewicht”的&lt;li&gt;,无论&lt;li&gt; 中嵌套的文本有多深。与*[contains(text(), 'Produktgewicht')] 对比,后者仅测试第一个直接子文本节点。

您尝试的/following::li 不起作用,因为&lt;li&gt; 没有遵循先前匹配的&lt;b&gt; 元素,而是&lt;b&gt; 的父元素:

//*[contains(text(), 'Produktgewicht')]/parent::li

【讨论】:

  • 嗨,首先非常感谢,这种方法效果很好....我的下一个问题是,在某些地方,提到的细节与表格相同 这是源代码:&lt;tr class="size-weight"&gt; &lt;td class="label"&gt; Artikelgewicht &lt;/td&gt; &lt;td class="value"&gt; 15 Kg &lt;/td&gt; &lt;/tr&gt; }您的建议对 &lt;li&gt; 很有效。但是有没有一种常用的方法来拉 &lt;td&gt; 以及 &lt;li&gt; ?因为,我想从这个&lt;td&gt;中拉出这15Kg
【解决方案2】:

试试这个:

element.all(by.css('li')).get(0).getText();

【讨论】:

    【解决方案3】:

    Xpath 可以相当简单:

    //li[b[contains(.,'Produktgewicht')]]/text()
    

    这应该在给定的li 元素 中获取整个文本。您还可以通过在 xpath 后面添加索引值 f.e. 来进行其他选择以标记 Produktgewicht6 Kg

    //li[b[contains(.,'Produktgewicht')]]/text()[0]
    //li[b[contains(.,'Produktgewicht')]]/text()[1]
    

    首先将标记Produktgewicht inkl。 Verpackung:第二个会标记6 Kg文本值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多