0
我目前正在自動化的網站,其中的網址不斷變化(SSO喜歡網站)..在這一點上,我們正在查詢字符串中傳遞參數..我想要捕獲網站經歷每個URL到達特定頁面。我怎樣才能做到這一點使用硒的webdriver ..如何使用Selenium獲取網站的每個網址?
我試過定期driver.getCurrentUrl(),但它是不可靠的..
是否有其他變通的呢?
非常感謝!
我目前正在自動化的網站,其中的網址不斷變化(SSO喜歡網站)..在這一點上,我們正在查詢字符串中傳遞參數..我想要捕獲網站經歷每個URL到達特定頁面。我怎樣才能做到這一點使用硒的webdriver ..如何使用Selenium獲取網站的每個網址?
我試過定期driver.getCurrentUrl(),但它是不可靠的..
是否有其他變通的呢?
非常感謝!
嘗試運行以下命令:
driver.get("http://www.telegraph.co.uk/");
List<WebElement> links = driver.findElements(By.tagName("a"));
List<String> externalUrls = new ArrayList();
List<String> internalUrls = new ArrayList();
System.out.println(links.size());
for (int i = 1; i <= links.size(); i = i + 1) {
String url = links.get(i).getAttribute("href");
System.out.println("Name:"+links.get(i).getText());
System.out.println("url"+url);
System.out.println("----");
if (url.startsWith("http://www.telegraph.co.uk/")) {
if(!internalUrls.contains(url))
internalUrls.add(links.get(i).getAttribute("href"));
} else {
if(!externalUrls.contains(url))
externalUrls.add(links.get(i).getAttribute("href"));
}
}
如果你要收集所有的鏈接爲您的網站,然後我會做這樣的事情:
public class GetAllLinksFromThePage {
static List<String> externalUrls = new ArrayList();
static List<String> internalUrls = new ArrayList();
public static void main(String[] args) {
MyChromeDriver myChromeDriver = new MyChromeDriver();
WebDriver driver = myChromeDriver.initChromeDriver();
checkForLinks(driver, "http://www.telegraph.co.uk/");
System.out.println("finish");
}
public static void checkForLinks(WebDriver driver, String page) {
driver.get(page);
System.out.println("PAGE->" + page);
List<WebElement> links = driver.findElements(By.tagName("a"));
for (WebElement we : links) {
String url = we.getAttribute("href");
if (url.startsWith("http://www.telegraph.co.uk/")) { //mymainpage
if (!internalUrls.contains(url)) {
internalUrls.add(we.getAttribute("href"));
System.out.println(we.getText() + " has added to internalUrls");
checkForLinks(driver, url);
}
} else if (!externalUrls.contains(url)) {
externalUrls.add(we.getAttribute("href"));
System.out.println(we.getText() + " has added to externalUrls");
}
}
}
}
希望這有助於!
Mashkurm你是什麼意思,但它是不可靠的?也許你只是以一種不可靠的方式使用'.getCurrentUrl()'。 **:)**是否將'.getCurrentUrl()'語句包裝在'ExplicitWait'中?無論如何,如果你想捕捉大量的URL,那麼Selenium是不可行的。你應該嘗試使用** JSoup **。 – iamdanchiv