2014-09-26 13 views
0

Есть ли способ получить ссылку на сайт webelement. Я знаю, что мы можем получить текст из webelement, а также с помощью метода getAttribute («href») мы можем разместить ссылку для ссылки href. Но мое требование - получить всю ссылку. Например,Как получить ссылки с веб-страницы с помощью selenium

1.< a href="http://www.java2s.com/">Example</a> 
2. < a onclick="Test.TestFunction("9","testNumber","2");" style="cursor:pointer">This is text display on page</a>. 

У меня есть пользователь ниже данного кода:

public void getAlllink(){ 
    tcount = driver.findElements(By.tagName("a")); 
    System.out.println("Total Links on page :"+tcount.size()); 
    for(WebElement we:tcount){ 
    System.out.println("Link: "+str);//display element but not link. 
    we.click(); //This click on link 
    System.out.println(we.getText()); //display text code that fetched by selenium and not link text 
    System.out.println(we.getAttribute("href"));//display only one link http://www.java2s.com/ 
} 

Есть ли способ, чтобы получить адрес ссылки как для элемента. Одна простая ссылка, а другая - это ссылка, которая генерируется при вызове функции JavaScript.

+0

Какова Ваша переменная 'str'? Это не объявлено, прежде чем пытаться использовать его, насколько я могу судить. Нажатие на ссылку, скорее всего, изменит содержимое браузера, поэтому методы '.getText()' и '.Attribute() 'будут сбой, если вы не нажмете ПОСЛЕ получения этих данных. –

+0

Спасибо, что ответили. Да, вы правы, когда функция щелчка называется изменением содержимого для браузера, и, следовательно, скрипт терпит неудачу. str - переменная String, которая равна str = we.toString(); но он отображает текстовый код, который извлекается с помощью selenium –

ответ

0
public class Java2sAllLinksCapture { 

public static void main(String[] args) { 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.java2s.com/"); 
    List<WebElement> links = driver.findElements(By.tagName("a")); 
    System.out.println(links.size()); 
    for(int i=0;i<links.size();i++){ 
     //print the link text 
     System.out.println(links.get(i).getText()); 
     //Print the href's 
     System.out.println(links.get(i).getAttribute("href")); 
    } 
    } 
    } 
+0

Если u удовлетворен приведенным выше кодом, PLS выберите верхнюю стрелку «Этот ответ полезен» – DSL

+0

Извините. Почему я получаю -1 для этого ответа. – DSL

+0

Привет, Карим Нарсиндани, у меня есть быстрый вопрос, который, я думаю, хочу сначала открыть родительский браузер и получить ссылку href, а затем щелкнуть дочерние ссылки один за другим на родительской странице, а затем открыть новую страницу, это значит, вернуться к родительской странице и нажать следующую ссылку, затем открыть дочернюю страницу, получить URL-адрес и заголовок, а затем вернуться на родительскую страницу, как это? Я думаю, что вы пытаетесь получить все родительские и дочерние hrefs. Если это ваш вопрос? Если да, у меня есть ответ на этот вопрос. – DSL

0

Вам нужно будет нажать на ссылку, чтобы выполнить яваскрипта функцию, которая в свою очередь, возвращает ссылку, которая будет использоваться в качестве пункта назначения. Нажав на ссылку, вы перейдете на страницу назначения, что делает предыдущие веб-элементы недоступными, поэтому ссылку не удается найти. Не нажимая на ссылку, функция javascript не выполнит и не создаст ссылку.

+0

Спасибо Сара за ваши ценные материалы. Причина этого вопроса заключается в том, что я разрабатываю инструмент для проверки ссылок с использованием селена для веб-приложения моей компании. Тем не менее, я могу проверить ссылки, которые связаны с href link 'www.test.test/test1', но у нас также есть ссылка, например href "#", и с функцией javascript, когда пользователь нажимает кнопку кнопки, генерирует ссылку. Есть ли способ создать такую ​​ссылку без потери существующей страницы. Или мы можем получить имя функции javascript, чем я думаю, используя селен, мы можем выполнить требуемый javascript. –

Смежные вопросы