Iterator and advanced for loop can do similar job; However, the inconsistency on page navigation within a loop can be solved using array concept.
private static String[] links = null;
private static int linksCount = 0;
driver.get("www.xyz.com");
List<WebElement> linksize = driver.findElements(By.tagName("a"));
linksCount = linksize.size();
System.out.println("Total no of links Available: "+linksCount);
links= new String[linksCount];
System.out.println("List of links Available: ");
// print all the links from webpage
for(int i=0;i<linksCount;i++)
{
links[i] = linksize.get(i).getAttribute("href");
System.out.println(all_links_webpage.get(i).getAttribute("href"));
}
// navigate to each Link on the webpage
for(int i=0;i<linksCount;i++)
{
driver.navigate().to(links[i]);
Thread.sleep(3000);
}
1| Capture all links under specific frame|class|id and Navigate one by one
driver.get("www.xyz.com");
WebElement element = driver.findElement(By.id(Value));
List<WebElement> elements = element.findElements(By.tagName("a"));
int sizeOfAllLinks = elements.size();
System.out.println(sizeOfAllLinks);
for(int i=0; i<sizeOfAllLinks ;i++)
{
System.out.println(elements.get(i).getAttribute("href"));
}
for (int index=0; index<sizeOfAllLinks; index++ ) {
getElementWithIndex(By.tagName("a"), index).click();
driver.navigate().back();
}
public WebElement getElementWithIndex(By by, int index) {
WebElement element = driver.findElement(By.id(Value));
List<WebElement> elements = element.findElements(By.tagName("a"));
return elements.get(index);
}
2| Capture all links [Alternate method]
#Java
driver.get(baseUrl + "https://www.google.co.in");
List<WebElement> all_links_webpage = driver.findElements(By.tagName("a"));
System.out.println("Total no of links Available: " + all_links_webpage.size());
int k = all_links_webpage.size();
System.out.println("List of links Available: ");
for(int i=0;i<k;i++)
{
if(all_links_webpage.get(i).getAttribute("href").contains("google"))
{
String link = all_links_webpage.get(i).getAttribute("href");
System.out.println(link);
}
}
#PYTHON
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.google.co.in/")
Link = driver.find_elements_by_tag_name("a")
# prints size of all the links available
print len(Link)
for index in Link:
print index.get_attribute("href")
driver.quit()
Good job...these code snippets are really useful for beginners to intermediate selenium testers...
ReplyDeleteNice to hear from you.
DeleteSams
Now how to make it regressive, that is from that link to other and from other....
ReplyDeleteNow how to make it regressive, that is from that link to other and from other....and navigate thru whole application from page to page.
ReplyDeletechrome hearts outlet
ReplyDeletekyrie irving shoes
supreme