我的目标是解析一段HTML代码,如下所示,以获取文本,评论和回复字段作为块的单独部分:
<div id='fooID' class='foo'>
<p>
This is the top caption of picture's description</p>
<p>
T=<img src="http://www.mysite.com/images/img23.jpg" alt="" width="64" height="108"/> </p>
<p>
And here is more text to describe the photo.</p>
<div class=comments>(3 comments)</div>
<div id='reply13' class='replies'>
<a href=javascript:getReply('13',1)>Show reply </a></div>
</div>
我的问题是Selenium的WebDriver似乎不支持HTML中的非字符串标识符(注意HTML中的类字段是'foo'而不是“foo”)。从我在Selenium文档和其他SO帖子中看到的所有示例中,后一种格式是WebDriver通常期望的。
以下是我的Java代码的相关部分以及我的各种(不成功)尝试:
java.util.List<WebElement> elementList = driver.findElements(By.xpath("//div[@class='foo']"));
java.util.List<WebElement> elementList = (List<WebElement>) ((JavascriptExecutor)driver).executeScript("return $('.foo')[0]");
java.util.List<WebElement> elementList = driver.findElements(By.xpath("//div[contains(@class, 'foo')]"));
java.util.List<WebElement> elementList = driver.findElements(By.cssSelector("div." + foo_tag)); // where foo_tag = "'foo'".replace("'", "\'");
java.util.List<WebElement> elementList = driver.findElements(By.cssSelector("'foo'"));
有没有办法解决这个问题?或者是否有另一种更好的方法来提取上述字段? 其他信息:
非常感谢您的帮助/建议!
答案 0 :(得分:1)
这是无效的HTML,所以Selenium没有机会。你应该修理它。
您将有更好的机会使用HTMLAgilityPack:
http://htmlagilitypack.codeplex.com/
对于格式错误(这是)HTML,它会好一点。
以下是一篇SO帖子,其中包含几种不同语言的几种不同选项,以及HTMLAgilityPack等工具。你应该找到一个合适的人:
答案 1 :(得分:0)
问题是,就我所知,html规范并不知道单引号。因此你对Selenum webdriver没有问题,问题是html。 你有机会编辑html代码吗?