无法从网页获取所有链接 - Selenium 无法通过使用下面提到的代码从网页获取所有链接。 代码如下:
package config;
import java.util.concurrent.TimeUnit;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class ActionKeywords {
// WebDriver driver = new FirefoxDriver();
WebDriver driver;
@BeforeTest
public void setup()
{
System.setProperty("webdriver.gecko.driver", "E:\\geckodriver-v0.16.1-win64\\geckodriver.exe");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability("marionette", true);
driver = new FirefoxDriver(dc);
driver.manage().window().maximize();
}
@Test
public void openBrowser(){
driver.get("https://www.google.com/");
}
/*
@Test
public void verify_Menus(){
WebElement mainMenu = driver.findElement(By.xpath("//ul[@id='menu-main']/li/a"));
System.out.println(mainMenu.getText());
WebElement subMenu = driver.findElement(By.xpath("//a[contains(text(),'Impegno Per La Natura')]"));
Actions action = new Actions (driver);
action.moveToElement(mainMenu).perform();
System.out.println(subMenu.getText());
action.click(subMenu).perform();
} */
@Test
public void all_Links(){
try{
List<WebElement> allLinks = driver.findElements(By.tagName("a"));
System.out.println("Count of all links: " +allLinks.size());
//Loop
for (WebElement link : allLinks)
System.out.println(link.getText());
}catch (Exception e){
System.out.println("Element not found by tagName");
}
}
@AfterTest
public void close_Browser(){
driver.quit();
}
}
运行此程序后,结果显示为“所有链接的计数:0” 请指教!
谢谢, 的Sudhir
答案 0 :(得分:0)
您将获得包含属性href / src的所有链接,如下面的代码所示:
@Test
public void alllinks()
{
System.setProperty("webdriver.chrome.driver", "D:/Selenium/Drivers/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("http://www.google.com");
List<WebElement> list=driver.findElements(By.xpath("//*[@href or @src]"));
for(WebElement e : list){
String link = e.getAttribute("href");
if(null==link)
link=e.getAttribute("src");
System.out.println(e.getTagName() + "=" + link);
}
}
希望此代码能为您提供帮助。
由于
答案 1 :(得分:0)
您正在使用正确的代码但是以错误的顺序执行all_Links()方法首先在openBrowser()之前执行。 请将优先级放在@test注释中,因为@test注释按默认字母顺序运行。
希望这对你有所帮助!
答案 2 :(得分:0)
如果您可以将driver.get("https://www.google.com/");
从OpenBrowser()
更改为SetUp()
,那会更好。 OpenBrowser()
不应该是一个测试,它可能会干扰执行的顺序。