我正在使用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
元素。