我的html
结构如下。
<div id="description">
wanted text
<div class="text-smaller normal wine-user-description">
<a href = "/users/user1"> unwanted text</a>
</div>
</div>
我使用selenium打开网址并从上方提取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错误。这是我第一次使用硒,而且我有一些困难时期。如果有人可以帮助我,那将非常有帮助。
答案 0 :(得分:3)
尝试使用以下jquery获取第一个节点内的文本
$('#description')[0].childNodes[0].nodeValue
我尝试使用你的HTML工作的上述代码。如果你的网站没有使用jquery这将无法工作,那么你必须将jquery注入DOM然后尝试它。将jquery注入DOM { {3}}
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获取更多信息请参阅view this article
答案 1 :(得分:1)
xpath无法工作的原因有两个:
但是,我们可以尝试获取单个文本而不更改您的代码:
val =
self.driver.find_element_by_xpath('//div[@id="description"]').get_attribute('textContent')