使用带有 Java 的 Selenium WebDriver 从页面源获取所有 href 链接
Fetching all href links from the page source using Selenium WebDriver with Java
我正在尝试测试页面上所有 href 链接的 HTTP 响应,使用 WebDriver 从页面获取所有链接,然后使用 http.connect 获取响应状态。
获取锚标签链接的代码片段:
List<WebElement> list = driver.findElements(By.cssSelector("a"));
for (WebElement link : list) {
System.out.println(link.getText());
}
但是我的页面有更多的 href 链接,这些链接没有锚标记 <a>
,并且可能位于页面正文之外的页眉部分左右。一些示例如下所示。上面的 webdriver 代码无法解决获取所有类型链接的问题。在某些情况下还需要提取src链接...
<script src="https://www.test.com/js/50/f59ae5bd.js"></script>
<link rel="stylesheet" href="www.test.com/css/27/5a92c391c7be2e9.css" rel="stylesheet" type="text/css" />
<link sizes="72x72" href="https://www.test.com/css/27/5a92c391c7b/kj32.png" />
<li><a href="https://www.test.com/webapps/mpp/resortcheck">resortcheck</a>
如果有人可以指导如何进行或解决了从页面获取所有 href 链接的类似问题,我将不胜感激。
您可以使用 Xpath 获取所有包含属性 href / src 的元素。
List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));
我试过类似的方法来获取其他资源文件的所有链接。它工作正常。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));
for(WebElement e : list){
String link = e.getAttribute("href");
if(null==link)
link=e.getAttribute("src");
System.out.println(e.getTagName() + "=" + link);
}
链接存在于正文之外是什么意思?
所有链接都可以通过 html 标签进行识别。还有哪些表示链接的方法?
检查我下面的代码可能会有帮助:
public static void main(String[] args)
{
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
List<WebElement> links=driver.findElements(By.tagName("a"));
for(WebElement ele:links)
System.out.println(ele.getAttribute("href"));
}
我正在尝试测试页面上所有 href 链接的 HTTP 响应,使用 WebDriver 从页面获取所有链接,然后使用 http.connect 获取响应状态。
获取锚标签链接的代码片段:
List<WebElement> list = driver.findElements(By.cssSelector("a"));
for (WebElement link : list) {
System.out.println(link.getText());
}
但是我的页面有更多的 href 链接,这些链接没有锚标记 <a>
,并且可能位于页面正文之外的页眉部分左右。一些示例如下所示。上面的 webdriver 代码无法解决获取所有类型链接的问题。在某些情况下还需要提取src链接...
<script src="https://www.test.com/js/50/f59ae5bd.js"></script>
<link rel="stylesheet" href="www.test.com/css/27/5a92c391c7be2e9.css" rel="stylesheet" type="text/css" />
<link sizes="72x72" href="https://www.test.com/css/27/5a92c391c7b/kj32.png" />
<li><a href="https://www.test.com/webapps/mpp/resortcheck">resortcheck</a>
如果有人可以指导如何进行或解决了从页面获取所有 href 链接的类似问题,我将不胜感激。
您可以使用 Xpath 获取所有包含属性 href / src 的元素。
List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));
我试过类似的方法来获取其他资源文件的所有链接。它工作正常。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));
for(WebElement e : list){
String link = e.getAttribute("href");
if(null==link)
link=e.getAttribute("src");
System.out.println(e.getTagName() + "=" + link);
}
链接存在于正文之外是什么意思?
所有链接都可以通过 html 标签进行识别。还有哪些表示链接的方法?
检查我下面的代码可能会有帮助:
public static void main(String[] args)
{
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
List<WebElement> links=driver.findElements(By.tagName("a"));
for(WebElement ele:links)
System.out.println(ele.getAttribute("href"));
}