如何使用Selenium从表中提取HTML链接?

时间:2015-11-18 18:12:34

标签: java html parsing selenium web

我使用Java和Selenium使用以下代码:

public static void main(String[] args){
    WebDriver driver;
    DesiredCapabilities caps; 
    caps = new DesiredCapabilities();
    caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
            "lib/phantomjs.exe"); 
    caps.setBrowserName(DesiredCapabilities.phantomjs().getBrowserName());
    driver = new PhantomJSDriver(caps);
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    driver.get("https://www.cdp.net/en-US/Pages/CDPAdvancedSearchResults.aspx?k=microsoft");
    WebElement element = driver.findElement(By.className("ms-vb2"));
    String text = element.getText();
    String href = element.getAttribute("href");
    driver.manage().deleteAllCookies(); 
    driver.quit();
    System.out.println(text + " " + href);  
}

我正在尝试使用代码的页面的特定部分包含以下内容。我正在尝试从类ms-vb2中提取href,即https://www.cdp.net/en-US/Results/Pages/Company-Responses.aspx?company=11930

<td class="ms-vb2"><a href="https://www.cdp.net/en-US/Results/Pages/Company-Responses.aspx?company=11930">Microsoft Corporation</a><br/>USA</td>

我收到了文字,但我没有得到href。我怎样才能提取出来?

1 个答案:

答案 0 :(得分:1)

driver.findElement(By.className("ms-vb2"))实际上会匹配td元素:

<td class="ms-vb2"><a href="https://www.cdp.net/en-US/Results/Pages/Company-Responses.aspx?company=11930">Microsoft Corporation</a><br>USA</td>

并且没有href属性。

您需要在里面找到链接。我会做一个CSS选择器:

driver.findElement(By.cssSelector(".ms-vb2 > a"))

我们在这里直接在a类的元素内搜索ms-vb2元素。