2015-06-25 3 views
0

Я использую EventFiringWebDriver и WebDriverEventListener. В слушателе я реализую метод после метода clickOn(WebElement arg0, WebDriver arg1).Печать имени переменной WebElement через WebDriverEventListener

WebElement myaccountLink =driver.findElement(By.cssSelector("div.footer>div.links>ul>li>a[title='My Account']")); 
myaccountLink.click(); 

Слушатель:

public void afterClickOn(WebElement arg0, WebDriver arg1) { 
    System.out.println("Clicked : "+arg0.toString()); 
} 

В результате:

Clicked: -> селектор CSS: div.footer> div.links> ул> Li> а [название = 'Мой аккаунт']]

Но я хотел бы:

Нажал: myaccountLink

ответ

0

Я открыт для коррекции на это, но, насколько я знаю, это не представляется возможным. Имена переменных не передаются в Java, а только значения.

+0

Спасибо. Так что нет возможного обходного пути? –

+0

Я кратко посмотрел на него вчера. На самом деле это кажется возможным благодаря размышлению. Так вот что вам нужно изучить. – Cathal

+0

Укажите, какой метод Reflection можно использовать здесь. –

1

Вы можете попробовать создать собственный класс, как это:

public class Selector { 
    public String name; 
    public By by; 

    public Selector(String name, By by){ 
     this.name= name; 
     this.by = by; 
    } 

    public String getName(){ 
     return name; 
    } 

    public By getBy(){ 
     return by; 
    } 
} 

Затем в коде:

Selector myAccountLink = ("Link to 'My account'", By.cssSelector("div.footer>div.links>ul>li>a[title='My Account']")); 
System.out.println("Clicked: " + myAccountLink.getName()); 

// Output: "Link to 'My account'"