Java 如何获得菜单选项的计数----Selenium

Java 如何获得菜单选项的计数----Selenium,java,selenium,Java,Selenium,我正在学习硒。我想获得测试菜单的菜单选项数 网站url: List<WebElement> Options=driver.findElements(By.xpath("//ul[@class='maximenuck2']//li//a[@class='maximenuck']//span")); System.out.println("Size>>>>>>>"+Options.size()); 我的代码是: List<WebEleme

我正在学习硒。我想获得测试菜单的菜单选项数

网站url:

List<WebElement> Options=driver.findElements(By.xpath("//ul[@class='maximenuck2']//li//a[@class='maximenuck']//span"));
System.out.println("Size>>>>>>>"+Options.size());
我的代码是:

List<WebElement> Options=driver.findElements(By.xpath("//ul[@class='maximenuck2']//li//a[@class='maximenuck']//span"));
System.out.println("Size>>>>>>>"+Options.size());
List Options=driver.findElements(By.xpath(//ul[@class='maximenuck2']//li//a[@class='maximenuck']///span”);
System.out.println(“Size>>>>>>”+Options.Size());

控制台输出为:
Size>>>>0

您需要先单击测试菜单,然后找到测试菜单的子菜单选项

修改代码:

//To Click on the Testing Menu
driver.findElement(By.xpath("//*[@id='g-navigation']//ul[@class=' maximenuck']/li//span[text()='Testing']")).click();

List<WebElement> Options=driver.findElements(By.xpath("//div[@class='floatck submenuck118']//ul[@class='maximenuck2']/li"));
System.out.println("Size>>>>>>>"+Options.size());
//点击测试菜单
driver.findElement(By.xpath(“//*[@id='g-navigation']//ul[@class='maximenuck']]/li//span[text()='Testing'])。单击();
列表选项=driver.findElements(By.xpath(//div[@class='floatck子菜单118']//ul[@class='maximenuck2']/li”);
System.out.println(“Size>>>>>>”+Options.Size());
输出:

//To Click on the Testing Menu
driver.findElement(By.xpath("//*[@id='g-navigation']//ul[@class=' maximenuck']/li//span[text()='Testing']")).click();

List<WebElement> Options=driver.findElements(By.xpath("//div[@class='floatck submenuck118']//ul[@class='maximenuck2']/li"));
System.out.println("Size>>>>>>>"+Options.size());
尺寸>>>>>>>>>20

编辑:

//To Click on the Testing Menu
driver.findElement(By.xpath("//*[@id='g-navigation']//ul[@class=' maximenuck']/li//span[text()='Testing']")).click();

List<WebElement> Options=driver.findElements(By.xpath("//div[@class='floatck submenuck118']//ul[@class='maximenuck2']/li"));
System.out.println("Size>>>>>>>"+Options.size());
澄清:

//To Click on the Testing Menu
driver.findElement(By.xpath("//*[@id='g-navigation']//ul[@class=' maximenuck']/li//span[text()='Testing']")).click();

List<WebElement> Options=driver.findElements(By.xpath("//div[@class='floatck submenuck118']//ul[@class='maximenuck2']/li"));
System.out.println("Size>>>>>>>"+Options.size());

在HTML中,类名[
maximenuck
]中有一些额外的空格。但是您在xpath中使用了as[
@class='maximenuck'
],因此它将计数返回为0

因此,您可以将xpath修改为
//ul[@class='maximenuck2']//li//a[contains(@class,'maximenuck')]///span
。(避免额外空间问题)

但是,xpath
//ul[@class='maximenuck2']//li//a[contains(@class,'maximenuck')]///span
将从所有菜单(测试、SAP、大数据…)中找到所有子菜单

为了获取与测试相关的子菜单,您需要在xpath中添加一些其他唯一的引用,如下所示

Xpath 1:
//div[@class='floatck子菜单118']//ul[@class='maximenuck2']/li

我刚刚在Xpath之前添加了一些唯一标识


XPath2
//div[@class='floatck submenuck118']//ul[@class='maximenuck2']//li//a[contains(@class,'maximenuck')]//span
使用
By.cssSelector(.submenuck118.titreck)
相反

你能分享你的HTML页面吗?你需要先点击测试菜单,然后找到子菜单它真的帮了我很多忙:)我可以知道我的xpath力不起作用的原因吗。firebug突出显示了它,然后我的xpath列表选项=driver.findElements(By.xpath(//ul[@class='maximenuck2']//li//a[@class='maximenuck']//span”);锚标记的类名中存在一些额外的空格,因此返回为null。我想,萤火虫可能会在那个空间被消灭。我已经编辑了答案,添加了一些额外的细节。请检查