Нужно получить href из HTML через идентификатор раздела - PullRequest
0 голосов
/ 08 октября 2018

Мне нужна помощь с получением href из HTML в моем автоматическом тесте.Мой тест должен получить конкретные URL-адреса (где мы можем найти продукт с некоторыми опциями) с веб-сайта, на котором есть id = "product-page".У меня есть метод, который должен работать, но он не работает.

Фрагмент HTML:

<section id="product-page">
<div class="container">
<div class="row">
<div class="col-12">
<ul class="breadcrumb">
<li><a href="/">Home</a></li>
<li><a href="/e-cigs-vaping-devices">E cigs vaping devices</a></li><li><a href="/e-cigs-vaping-devices/logic-pro-vaporizer">Logic pro vaporizer</a></li></ul></div></div></div>

И метод:

public ArrayList<String> verifyProductSection(String divID) {
	
	KeywordUtil.logInfo("Get all Products links");
	String ModifiedString="";
	ModifiedString=divID.toLowerCase();
	
	WebDriver driver = DriverFactory.getWebDriver();
	
	List<String>ActualProductsLinks = new ArrayList<String>();
	WebElement element = driver.findElement(By.id("product-page"));
	List<WebElement> options =        element.findElements(By.tagName("a"));
	System.out.println(options.size());
	
	int ActualLinksSize = 0;
	
		for (WebElement we : options) {
		
		String strLinkName = we.getText();
		//println strLinkName.isEmpty();
			
		if (strLinkName == null || strLinkName.isEmpty()){
			}else{
	
			ActualProductsLinks.add(strLinkName);
			ActualLinksSize=ActualLinksSize+1;
			println (ActualLinksSize + " : Product Link Name : " + strLinkName);
			}
		}
				println ActualLinksSize;
}

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Чтобы получить атрибут href , который равен /e-cigs-vaping-devices/logic-pro-vaporizer, вы можете использовать следующее решение:

  • xpath:

    System.out.println(driver.findElement(By.xpath("//section[@id='product-page']//ul[@class='breadcrumb']//a[contains(.,'Logic pro vaporizer')]")).getAttribute("href"));
    

Обновление

Вы можете создать пользовательскую функцию и вызывать ее там, где это необходимо:

  • Функция:

    public void print_href(String productName)
    {
        System.out.println(driver.findElement(By.xpath("//section[@id='product-page']//ul[@class='breadcrumb']//a[contains(.='" + productName + "')]")).getAttribute("href"));
    }
    
  • Вызов функции:

    print_href("Logic pro vaporizer")
    //or
    print_href("E cigs vaping devices")
    
0 голосов
/ 08 октября 2018

Насколько я понял твой вопрос.Вы хотите извлечь все ссылки из упомянутого раздела.

Используйте приведенный ниже код и дайте мне знать, если дальнейшие запросы.

WebElement section  = driver.findElement(By.id("product-page"));

List<WebElement> links = section.findElement(By.cssSelector(".breadcrumb a"));

System.out.println("total links : " + links.size());

for(int i=0 ; i<links.size(); i++)
{
     System.out.println("Linktext : " + links.get(i).getText());
     System.out.println("Link href : " + links.get(i).getAttribute("href"));
}
...