Selenium UI 操作总结。
*************************************
1 下拉框的操作方法:
1 选取下拉框中的某个值
1)
driver.select(by, value) :
driver.select(By.id(“SelectName”), “aimvalue”) :首先通过by方法定位下拉框位置,然后设置目标值。
2)
使用select类
public void selectColumnName(){
Select sec = new Select(driver.findElement(By.id(“SelectName”)));
sec.selectByVisibleText(“aimvalue”);
}
*************************************
2 获取WebElements
public void getElementsList()
{
private Vector<Select> selects = new Vector<Select>();
private List<Select> selects1 = new ArrayList<Select>();
List<WebElement> elements = driver.findElements(By.xpath(“//…”)); //获取一组元素
WebElement ele = driver.findElement(By.xpath(“//…”)); //获取单个元素
//将元素存入list 或者 vector中
for(WebElement ele : elements)
{
selects.add(new Select(ele));
}
//Select test = new Select(elements.get(0));
}
*************************************
3 Table 的处理方法
UI table :
![Selenium <wbr>UI <wbr>操作总结 Selenium <wbr>UI <wbr>操作总结]()
Table scripts:
![Selenium <wbr>UI <wbr>操作总结 Selenium <wbr>UI <wbr>操作总结]()
1)获取某行的值
public List<String> getRowData(int row)
{
String css = “//tbody.tableBody>tr.equals(“+row+”)”;
List<WebElement> elements = driver.fineElements(By.cssSetector(css));
List<String> results = new ArrayList<String>();
for(WebElement ele:elements)
{
results.add(ele.getText());//讲行中各元素的text值取出,存入list中。
}
return results;
}
2)获取某列的值
a)取出header对应的列
b)取出某一列的所有数据
//该函数用于取出table的所有header的column,并存入数据中返回。
public String[] getColumnArray()
{
String css = “//table.tableRegion td.tableHeader”;
//取出table的各个header的名字
List<String> elements = driver.findElements(By.cssSetector(css));
String[] results = new String[elements.size()];
for(int i=0;i<elements.size();i++)
{
// 取出list中的第i个element的Text值存入数据中
results[i] = elements.get(i).getText();
}
return results;
}
//取出某列的所有值
public String[] getColumnData(String columnName)
{
//首先需要获取columnname对应的id(index)
String[] columns = getColumnArray();
//将column的值存入man中,这样便可根据columnname 取得column对应的index
HashMap<String,Integer> columndef = new HashMap<String,Integer>();
for(int i=0; i<columns.length;i++)
{
columndef.put(column[i],i);
}
int index = columndef.get(columnName);
index++;
//取得列值
String css = “//tbody.tableBody td:nth-child(“+index+”)”;
List<WebElement> elements = driver.findElements(By.cssSetector(css));
String[] results = new String[elements.sizi()];
int i=0;
for(WebElement e:elements)
{
results[i] = e.getText();
i++;
}
return results;
}
3)获取某行某列交集的值
public String[] getColumnData(int row, String columnName)
{
String[] columns = getColumnArray();
for(int i =0;i<columns.length;i++)
{
columnDef.put(columns[i], i);
}
int index=columnDef.get(columnName);
//通常一个table的第一行是表头,第二行才是具体的值,selenium识别行列从1开始数的,不是0.所以一个table的第1行第1列的值应该是://table[@class='myTable']/tbody/tr[2]/td[1]
//所以此处index 要做++操作
index++;
String path=”//table[@id='updateFeedbackTable_table']//tr["+row+"]//td["+index+"]“;
List<WebElement> eles = action.findElements(By.xpath(path));
String[] results = new String[eles.size()];
int i=0;
for(WebElement ele:eles)
{
results[i]=ele.getText();
i++;
}
return results;
}
4)获取单元格的值
![Selenium <wbr>UI <wbr>操作总结 Selenium <wbr>UI <wbr>操作总结]()
public String getColumnInformation(Integer line, String column) {
Integer i = getColumnsMap().get(column);
String s = “tbody.tableBody>tr:nth(” + line + “)>td:nth(” + i
+ “)>input”;
if (column.equals(“ITEM_DESCRIPTION”) || column.equals(“ITEM_NBR”)) {
s = “tbody.tableBody>tr:nth(” + line + “)>td:nth(” + i + “)>input”;
}
WebElement we = action.findElement(By.cssSelector(s));
//取得input的属性value的值110。
String value =we.getAttribute(“value”);
//we.getCssValue(“value”);
return value;
}