【问题标题】:Selenium selected node textSelenium 选定节点文本
【发布时间】:2015-05-02 16:45:16
【问题描述】:

我有一个html 结构如下。

<div id="description">
   wanted text
   <div class="text-smaller normal wine-user-description">
    <a href = "/users/user1"> unwanted text</a>
   </div>
</div>

我正在使用 selenium 打开 url 并从上面的块中提取 required text。下面是代码

val = self.driver.find_element_by_xpath('//div[@id="description"]').text

但是上面的代码返回了所有的文本(想要的和不需要的)。我什至尝试过

 val = self.driver.find_element_by_xpath('//div[@id="description"]/text()').text

但我得到一些 xpath 错误。这是我第一次使用硒,我遇到了一些困难。如果有人可以帮助我,那将非常有帮助。

【问题讨论】:

  • 您在这里有什么要求?只是为了验证文本或查找 id 为 description 的节点?
  • @Saifur : 我需要检索div id ="description"中的文本

标签: python python-2.7 selenium


【解决方案1】:

尝试使用下面的 jquery 来获取第一个节点内的文本

$('#description')[0].childNodes[0].nodeValue

我用你的 HTML 尝试了上面的代码,它对我有用。如果你的网站中没有使用 jquery,这将不起作用,那么你必须将 jquery 注入 DOM,然后尝试它。将 jquery 注入 DOM @ 987654321@

String node_text=(String)((JavascriptExecutor)driver).executeScript("return $('#description')[0].childNodes[0].nodeValue");

System.out.println(node_text.trim());

我尝试使用 java 而不是 python 如果你使用 python 然后而不是使用 JavascriptExecutor 使用 browser.execute_script 更多信息请参考post

【讨论】:

  • 我认为 OP 正在为 Selenium 寻找解决方案,目前不支持 jquery 选择器
  • @Saifur Hi saifur...selenium 支持 jquery(前提是 jquery 在 DOM 中使用/加载,否则我们可以将其注入 DOM 并使用它)我几乎在所有测试脚本中都使用 jquery。 .我附上了我使用 jquery 获得的输出截图...请参考上面帖子中的截图
  • 我很抱歉。我误解了你的意思。并且,使用executeScript 当然可以实现。好主意!
【解决方案2】:

xpath 不起作用的原因有两个:

  1. 在 python 中,selenium xpath 方法不支持 xpath 语句中的“/text()”。我认为您可以将其用作选择 DOM 元素但不返回文本的条件。
  2. xpath 对于您的用例来说太宽泛了。您需要从父 div 中取消选择子项。

但是,我们可以尝试在不更改您的代码的情况下获取单个文本,如下所示:

    val =
    self.driver.find_element_by_xpath('//div[@id="description"]').get_attribute('textContent')

【讨论】:

    猜你喜欢
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2011-06-29
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多