【发布时间】:2016-12-16 02:22:30
【问题描述】:
我正在尝试获取以 'u_' 开头并以 '_5' 结尾并且在数据按字母顺序更改之间的元素的 id。所以,有时我会看到 'u_d_5' 有时会看到 'u_6_5' 。在那种情况下,如何获得动态ID? 我知道有一些方法,比如开始或结束,但它们对我根本不起作用。谁能给我一些建议? 代码sn-p:
WebElement cls=ff.findElement(By.xpath("//*[@id='u_6_5']"));
完整代码:
String s=System.getProperty("user.dir");
System.setProperty("webdriver.chrome.driver", s+"\\ChromeDriver\\chromedriver.exe");
ChromeDriver ff=new ChromeDriver();
try{
ff.manage().window().maximize();
ReadfrmExcel rd=new ReadfrmExcel();//reading data
String[][] readata=rd.excelRead();
for(int i=1; i<readata.length; i++)
{
ff.get("http://www.facebook.com");
Thread.sleep(1000);
ff.findElementByXPath("//*[@id='email']").sendKeys(readata[i][0]);
ff.findElementByXPath("//*[@id='pass']").sendKeys(readata[i][1]);
ff.findElement(By.id("u_0_v")).click();
System.out.println("Waiting for element to appear");
Thread.sleep(3000);
WebElement element=ff.findElement(By.id("userNavigationLabel"));
element.click();
System.out.println("Clicked drop down");
//ff.findElementByXPath("//*[@id='userNavigationLabel']").click();
System.out.println("sleeping 5 secs");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
WebElement cls=ff.findElement(By.xpath("//*[starts-with(@id,'u_') and ends-with(@id, '_5']"));
boolean vis=cls.isDisplayed();
System.out.println(vis);
Thread.sleep(8000);
System.out.println("Sleeping 8 secs");
cls.click();
System.out.println("After clicking");
System.out.println("Successfully logged out!!");
//ff.close();
ff.close();
}
}
catch(Exception e){
System.out.println(e);
}
【问题讨论】: