Java Xpath找到的表元素列表只包含10个可见的元素,这些元素具有可以通过getText()方法接收的正确文本值
我想从framable表中获取WebElement对象的列表,并在元素数大于10的情况下使用getText()方法获取文本。用户只能看到10列Java Xpath找到的表元素列表只包含10个可见的元素,这些元素具有可以通过getText()方法接收的正确文本值,java,list,selenium,webdriver,Java,List,Selenium,Webdriver,我想从framable表中获取WebElement对象的列表,并在元素数大于10的情况下使用getText()方法获取文本。用户只能看到10列 我的表是框架式的,一次只显示10列,因此findElements只获取这10个列名 代码,用于获取列值: 代码: 实际结果: 0 element Column1 1 element Column2 2 element Column3 3 element Column4 4 element Column5 5 element Column6 6
0 element Column1
1 element Column2
2 element Column3
3 element Column4
4 element Column5
5 element Column6
6 element Column7
7 element Column8
8 element Column9
9 element Column10
10 element
11 element
12 element
13 element
14 element
由于driver.findElements始终只能看到我的脆弱表的可见部分,因此需要将文本值直接放入单独的列表中,移动到整行的所有单元格中(我还需要第一行单元格):
public TableElements getTableElements()引发异常{
如果(getColumnsList()!=null){
List elements=getColumnsList();
List columnNames=新建ArrayList();
List rowValues=new ArrayList();
ListIterator listItr=null;
int columnsumber=elements.size();
System.out.println(“columnsumber是:”+driver.findElement(By.xpath(datasource)).getText())中的“+columnsumber+”;
WebElement cell=driver.findElement(By.xpath(getValue(“firstcolumnpath”));
单元格。单击();
listItr=elements.listIterator();
while(listItr.hasNext()){
add(listItr.next().getText());
添加(driver.switchTo().activeElement().getText());
driver.switchTo().activeElement().sendKeys(键.箭头\右);
}
返回新的TableElements(列名称、行值);
}
否则{
返回新的TableElements(null,null);
}
}
public List getColumnsList()引发异常{
if(CSSElementExists(getValue(“columnlabelcss”))
返回driver.findElements(By.xpath(getValue(“columnLabelsXpath”));
返回null;
}
欢迎使用堆栈溢出!我不清楚为什么您希望输出中有Column11
到Column15
。请您的问题提供一个(重点是“可验证的”)说明您的问题。
0 element Column1
1 element Column2
2 element Column3
3 element Column4
4 element Column5
5 element Column6
6 element Column7
7 element Column8
8 element Column9
9 element Column10
10 element Column11
11 element Column12
12 element Column13
13 element Column14
14 element Column15
0 element Column1
1 element Column2
2 element Column3
3 element Column4
4 element Column5
5 element Column6
6 element Column7
7 element Column8
8 element Column9
9 element Column10
10 element
11 element
12 element
13 element
14 element
public TableElements getTableElements() throws Exception {
if (getColumnsList()!=null) {
List<WebElement> elements = getColumnsList();
List<String> columnNames = new ArrayList<>();
List<String> rowValues = new ArrayList<>();
ListIterator<WebElement> listItr = null;
int columnsNumber = elements.size();
System.out.println("columnsNumber is: " + columnsNumber + " in " + driver.findElement(By.xpath(datasource)).getText());
WebElement cell = driver.findElement(By.xpath(getValue("firstColumnXpath")));
cell.click();
listItr = elements.listIterator();
while (listItr.hasNext()) {
columnNames.add(listItr.next().getText());
rowValues.add(driver.switchTo().activeElement().getText());
driver.switchTo().activeElement().sendKeys(Keys.ARROW_RIGHT);
}
return new TableElements(columnNames, rowValues);
}
else {
return new TableElements(null, null);
}
}
public List<WebElement> getColumnsList() throws Exception {
if (CSSElementExists(getValue("columnLabelsCSS")))
return driver.findElements(By.xpath(getValue("columnLabelsXpath")));
return null;
}