Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium选定节点文本_Python_Python 2.7_Selenium - Fatal编程技术网

Python Selenium选定节点文本

Python Selenium选定节点文本,python,python-2.7,selenium,Python,Python 2.7,Selenium,我有一个html结构,如下所示 <div id="description"> wanted text <div class="text-smaller normal wine-user-description"> <a href = "/users/user1"> unwanted text</a> </div> </div> 但是上面的代码返回所有文本(需要的和不需要的)。我甚至试过 val

我有一个
html
结构,如下所示

<div id="description">
   wanted text
   <div class="text-smaller normal wine-user-description">
    <a href = "/users/user1"> unwanted text</a>
   </div>
</div>
但是上面的代码返回所有文本(需要的和不需要的)。我甚至试过

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

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

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

$('#description')[0].childNodes[0].nodeValue
我用你的HTML尝试了上面的代码,它对我很有效。如果你的站点中没有使用jquery,这将不起作用,那么你必须将jquery注入DOM,然后再尝试..将jquery注入DOM


如果使用python,我尝试使用java而不是python,然后使用browser代替JavascriptExecutor.execute_脚本有关详细信息,请参阅此

xpath无法工作的原因有两个:

  • 在python中,selenium xpath方法不支持xpath语句中的“/text()”。我认为可以使用它作为选择DOM元素的条件,但不返回文本
  • xpath对于您的用例来说太宽了。您需要从父div中取消选择子项
  • 但是,我们可以尝试在不更改代码的情况下获取单个文本,如下所示:

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

    我认为OP正在为
    Selenium
    寻找一个不支持
    jquery
    选择器的解决方案currently@SaifurHi saifur…selenium支持jquery(前提是在DOM中使用/加载jquery,否则我们可以将其注入DOM并使用它)我几乎在我所有的测试脚本中都使用了jquery…我已经附上了我使用jquery获得的输出截图…请参考上面帖子中附带的截图。我误解了你的意思。当然,通过
    executeScript
    也可以实现。好主意!你对这里有什么要求?只是为了验证文本或查找id为
    description
    的节点?@Saifur:我需要检索
    div id=“description
    ”中的文本
    String node_text=(String)((JavascriptExecutor)driver).executeScript("return $('#description')[0].childNodes[0].nodeValue");
    
    System.out.println(node_text.trim());
    
        val =
        self.driver.find_element_by_xpath('//div[@id="description"]').get_attribute('textContent')