获取页面的可见文本

Dav*_*ang 32 java selenium-webdriver

如何在没有HTML标签的情况下使用selenium webdriver获取网页的可见文本部分?

我需要一些与Htmlunit函数HtmlPage.asText()相当的东西.

使用函数WebDriver.getSource获取文本并使用jsoup解析它是不够的,因为页面中可能存在隐藏元素(通过外部CSS),我对它们不感兴趣.

Nat*_*ill 37

执行By.tagName("body")(或选择顶部元素的其他选择器),然后getText()对该元素执行将返回所有可见文本.

  • 在python中,getText()方法不存在。相反,我们应该使用element.text (3认同)

小智 11

我可以用C#Selenium帮助你.

通过使用此选项,您可以选择该特定页面上的所有文本,并将其保存到首选位置的文本文件中.

确保你使用这些东西:

using System.IO;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
Run Code Online (Sandbox Code Playgroud)

到达特定页面后尝试使用此代码.

IWebElement body = driver.FindElement(By.TagName("body"));
var result = driver.FindElement(By.TagName("body")).Text;

// Folder location
var dir = @"C:Textfile" + DateTime.Now.ToShortDateString();

// If the folder doesn't exist, create it
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);

// Creates a file copiedtext.txt with all the contents on the page.
File.AppendAllText(Path.Combine(dir, "Copiedtext.txt"), result);
Run Code Online (Sandbox Code Playgroud)

  • 男人,人是卑鄙的.为什么这会被贬低?导致回答的人添加了一个额外的代码来保存捕获到文本文件的内容?它具有与上面回答的代码完全相同的代码. (3认同)

Bra*_*ard 6

我不确定你使用的语言是什么,但在C#中,IWebElement对象有一个.Text方法.该方法显示元素的开始和结束标记之间显示的所有文本.

我会使用XPath创建一个IWebElement来抓取整个页面.换句话说,你抓住body元素并查看其中的文本.

string pageText = driver.FindElement(By.XPath("//html/body/")).Text;
Run Code Online (Sandbox Code Playgroud)

如果上述代码不适用于selenium,请使用以下代码:

string yourtext= driver.findElement(By.tagName("body")).getText();
Run Code Online (Sandbox Code Playgroud)