我是自动化的免费CRM网站。当我试图在索引页面上捕获菜单名时(登录后),我将得到菜单名以及它们的子菜单名(子菜单名为空)。我只是与xpath
纠缠不清,只为主菜单找到xpath
。我只想打印菜单名。
代码:
@Test
public void Menus() throws Exception {
driver=new FirefoxDriver();
driver.get("https://www.freecrm.com/index.html");
driver.findElement(By.name("username")).sendKeys("XXXXX");
driver.findElement(By.name("password")).sendKeys("XXXXX");
driver.findElement(By.xpath("//input[@class='btn btn-small']")).click();
WebDriverWait wait=new WebDriverWait(driver,20);
driver.switchTo().frame("mainpanel");
List<String> LS=new ArrayList<>();
List<WebElement> Tabs=driver.findElements(By.xpath("//div[@id='navmenu']//li//a[Starts-with(@style,'background')]"));
for(WebElement Ele:Tabs) {
LS.add(Ele.getText().trim());
}
System.out.println(LS);
String list=LS.stream().map(Object::toString).collect(Collectors.joining(","));
System.out.println("List length is.."+list.length());
String[] X=list.split(",");
for(int i=0;i<Tabs.size();i++) {
System.out.println(X[i]);
FileWriter Fr=new FileWriter("D://MyTxt//k.txt");
PrintWriter Pw=new PrintWriter(Fr);
Pw.println(X[i]);
}
}
截图:
发布于 2018-08-09 17:39:57
更改Xpath如下所示,以便只获取菜单名称
//div[@id='navmenu']/ul/li/a
代码:
List<String> LS=new ArrayList<>();
List<WebElement> Tabs=driver.findElements(By.xpath("//div[@id='navmenu']/ul/li/a"));
for(WebElement Ele:Tabs) {
LS.add(Ele.getText().trim());
}
System.out.println(LS);
输出:
[HOME, CALENDAR, COMPANIES, CONTACTS, DEALS, TASKS, CASES, CALL, EMAIL, TEXT/SMS, PRINT, CAMPAIGNS, DOCS, FORMS, REPORTS]
List length is..105
HOME
CALENDAR
COMPANIES
CONTACTS
DEALS
TASKS
CASES
CALL
EMAIL
TEXT/SMS
PRINT
CAMPAIGNS
DOCS
FORMS
REPORTS
https://stackoverflow.com/questions/51760126
复制相似问题