无法使用Selenium webdriver获取HTML TAG TEXT

时间:2016-09-27 07:07:34

标签: java html selenium selenium-webdriver webdriver

我在webdriver中遇到了一个奇怪的行为。问题很简单。我只是想在下拉列表中打印文本的名称,但我无法做到这一点,我尝试了各种方法。

第1道:将getText与我的代码段一起使用

List<WebElement> dupmap =  driver.findElements(By.xpath("//*[@class='dropdown-menu']/li/a"));
System.out.println("Size of sub menu is : " + dupmap.size());
for(int j=0;j<dupmap.size();j++){
System.out.println("Sub menu options are : " + dupmap.get(i).getText());
}

获取null作为输出。

第2道:.getAttribute("innerText")输出用作Load saved data source

System.out.println("Sub menu options are : " + dupmap.get(i).getAttribute("innerText"));}

我不确定为什么我将此Load saved data source作为输出。

第3道:将.getAttribute("innerHTML")输出用作Load saved data source <span class="caret-right"></span>;不知道这是什么?

第4道:将.getAttribute("textContent")输出用作Load saved data source;不知道这是什么?

但是当我将xpath从此//*[@class='dropdown-menu']/li/a更改为//*[@class='dropdown-menu']然后使用.getText()时;我正在输出

Size of sub menu is : 6
Sub menu options are : Add map...
Duplicate
Rename
Auto-align map objects...
Analyze territory alignment...
Optimize selected territories...
Remove...
Sub menu options are : Add map...
Duplicate
Rename
Auto-align map objects...
Analyze territory alignment...
Optimize selected territories...
Remove...
Sub menu options are : Add map...
Duplicate
Rename
Auto-align map objects...
Analyze territory alignment...
Optimize selected territories...
Remove...
Sub menu options are : Add map...
Duplicate
Rename
Auto-align map objects...
Analyze territory alignment...
Optimize selected territories...
Remove...
Sub menu options are : Add map...
Duplicate
Rename
Auto-align map objects...
Analyze territory alignment...
Optimize selected territories...
Remove...
Sub menu options are : Add map...
Duplicate
Rename
Auto-align map objects...
Analyze territory alignment...
Optimize selected territories...
Remove...

所需的文字,但正如您所看到的,所有菜单选项都在一起,并且迭代次数为6.我不确定发生了什么。我的菜单及其源代码是:

enter image description here

,菜单为:

enter image description here

此外,当我尝试单击其中一个选项时,我收到错误,因为元素不可见。

1 个答案:

答案 0 :(得分:0)

for(int j=0;j<dupmap.size();j++){
  System.out.println("Sub menu options are : " + dupmap.get(i).getText());
}

在您的代码中,您使用了dupmap.get(i).getText()。但是在for循环中你使用j作为索引变量。