如何获取定位器路径

时间:2018-12-13 10:11:13

标签: java css selenium

我想知道如何打印定位器路径? 例如-

driver.findElement(By.cssSelector("parent .some_class"))

如何到达parent .some_class

我尝试过这种方式:

@FindBy(css = "parent .some_class")
Webelement element;
public Webelement getElement(){ return element; }
System.out.println(getElement);

结果:

  

[[ChromeDriver:MAC上的Chrome(99c7e4e38147c9f61da0c83c5ef1b992)]-> css选择器:parent .some_class]

如何将其打印到\字符串,因此它将看起来是 parent .some_class

不能使用string.split

2 个答案:

答案 0 :(得分:1)

如何获取定位器路径?如果出于报告目的,则最好与Web驱动程序甚至是侦听器一起使用。您可以参考以下步骤进行相同操作

步骤1:创建一个事件处理程序类并实现WebDriverEventListener接口,它将要求实现该类中所有未实现的方法,因为它是一个接口,并且您必须实现其所有方法。

还有一些方法-

public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2)

还有

public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2)

在那里您可以抢到想要的东西。

例如

@Override
public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
    System.out.println("Locator info : "+ arg0);
}

第2步:要集成所有这些内容,您需要使用EventFiringWebDriver并按如下所示注册偶数处理程序类-

WebDriver driver = new ChromeDriver();

EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
EventHandler handler = new EventHandler();
eventDriver.register(handler);

eventDriver.get("URL");
eventDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
eventDriver.findElement(By.id("SearchLocationPicker")).click();
eventDriver.findElement(By.cssSelector("li a[title='Manitoba']")).click();
eventDriver.findElement(By.cssSelector("li a[title='Flin Flon']")).click();

输出:

  

定位器信息:By.id:SearchLocationPicker

     

定位器信息:By.cssSelector:li a [title ='Manitoba']

     

定位器信息:By.cssSelector:li a [title ='Flin Flon']

有关更多详细信息,请refer

答案 1 :(得分:1)

尝试一下:

Pattern pattern = Pattern.compile("->(.*)]");
Matcher matcher = pattern.matcher(getElement.toString());
if (matcher.find()) {
    System.out.println(matcher.group(1));
}