我正在使用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。我该如何提取呢?

最佳答案

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元素。

10-07 19:20
查看更多