我想知道如何打印定位器路径? 例如-
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
。
答案 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));
}