Selenium webdriver 如何在关键字框架中自动化单选按钮?
我的web应用程序中有一组单选按钮。我尝试了几乎所有的自动化建议,但没有被选中。我使用的是关键字框架,数据将通过excel文件读取 这是我的关键字代码:Selenium webdriver 如何在关键字框架中自动化单选按钮?,selenium-webdriver,frameworks,apache-poi,keyword,browser-automation,Selenium Webdriver,Frameworks,Apache Poi,Keyword,Browser Automation,我的web应用程序中有一组单选按钮。我尝试了几乎所有的自动化建议,但没有被选中。我使用的是关键字框架,数据将通过excel文件读取 这是我的关键字代码: package testscript; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import java.util.Properties; im
package testscript;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class Keywords {
static FirefoxDriver driver;
static Properties prop;
static FileInputStream input;
public void openbrowser() throws IOException {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
prop = new Properties();
input = new FileInputStream("F:\\DarwishKeywordFramework\\src\\objects\\objectrepository.properties");
prop.load(input);
}
public void input(String testData, String objectName) {
driver.findElement(By.xpath(prop.getProperty(objectName))).sendKeys(testData);
}
public void navigate(String testData) {
driver.get(testData);
}
public void click(String objectName) {
driver.findElement(By.xpath(prop.getProperty(objectName))).click();
}
public String verifypagetitle(String expectedTestData) {
String actualValue = driver.getTitle();
return actualValue;
}
public String verifyeditboxtext(String expectedTestData, String objectName) {
String actualValue = driver.findElement(By.xpath(prop.getProperty(objectName))).getAttribute("value");
return actualValue;
}
public String verifypagetext(String expectedTestData, String objectName) {
String actualValue = driver.findElement(By.xpath(prop.getProperty(objectName))).getText();
return actualValue;
}
public void selectlist(String testData, String objectName) {
Select select = new Select(driver.findElement(By.xpath(prop.getProperty(objectName))));
select.selectByValue(testData);
}
}
以下是我从excel读取数据的代码:
包测试脚本
import org.testng.annotations.Test;
import org.testng.AssertJUnit;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Rule;
import org.junit.rules.ErrorCollector;
public class ExecuteLeadTest {
static Keywords keyword;
@Rule
public ErrorCollector errCol = new ErrorCollector();
@Test
public void runLeadTest() throws IOException, InterruptedException {
keyword = new Keywords();
ArrayList data = new ArrayList();
FileInputStream file = new FileInputStream("F:\\DarwishKeywordFramework\\LeadSuite.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheet("TestSteps");
Iterator row = sheet.iterator();
while (row.hasNext()) {
Row rowIterator = (Row) row.next();
Iterator cellItr = rowIterator.cellIterator();
while (cellItr.hasNext()) {
Cell cell = (Cell) cellItr.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
data.add(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_BOOLEAN:
data.add(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
data.add(cell.getNumericCellValue());
break;
}
}
}
System.out.println(data);
for (int i=3;i<data.size();i++){
if (data.get(i).equals("openbrowser")) {
System.out.println(data.get(i));
keyword.openbrowser();
}
if (data.get(i).equals("navigate")) {
String key = (String) data.get(i);
String testData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
keyword.navigate(testData);
}
if (data.get(i).equals("input")) {
String key = (String) data.get(i);
String testData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
System.out.println(key);
System.out.println(testData);
System.out.println(objectName);
keyword.input(testData,objectName);
}
if (data.get(i).equals("click")){
String key = (String) data.get(i);
String testData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
System.out.println(key);
System.out.println(testData);
System.out.println(objectName);
keyword.click(objectName);
}
if (data.get(i).equals("selectlist")) {
String key = (String) data.get(i);
String testData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
System.out.println(key);
System.out.println(testData);
System.out.println(objectName);
keyword.selectlist(testData,objectName);
}
if (data.get(i).equals("verifypagetext")) {
String key = (String) data.get(i);
String ExpectedTestData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
System.out.println(key);
System.out.println(ExpectedTestData);
System.out.println(objectName);
String actualValue = keyword.verifypagetext(ExpectedTestData,objectName);
try{
AssertJUnit.assertEquals(ExpectedTestData, actualValue);
}catch(Throwable t){
// errCol.addError(t);
}
}
if (data.get(i).equals("verifyeditboxtext")) {
String key = (String) data.get(i);
String ExpectedTestData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
System.out.println(key);
System.out.println(ExpectedTestData);
System.out.println(objectName);
String actualValue = keyword.verifyeditboxtext(ExpectedTestData,objectName);
try{
AssertJUnit.assertEquals(ExpectedTestData, actualValue);
}catch(Throwable t){
errCol.addError(t);
}
}
if (data.get(i).equals("verifypagetitle")) {
String key = (String) data.get(i);
String ExpectedTestData = (String) data.get(i+1);
String objectName = (String) data.get(i+2);
String actualValue = keyword.verifypagetitle(ExpectedTestData);
try{
AssertJUnit.assertEquals(ExpectedTestData, actualValue);
}catch(Throwable t){
errCol.addError(t);
}
}
}
}
}
import org.testng.annotations.Test;
导入org.testng.AssertJUnit;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Iterator;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入org.junit.Rule;
导入org.junit.rules.ErrorCollector;
公共类ExecuteLeadTest{
静态关键词;
@统治
public ErrorCollector errCol=new ErrorCollector();
@试验
public void runLeadTest()引发IOException、InterruptedException{
关键字=新关键字();
ArrayList数据=新的ArrayList();
FileInputStream file=newfileinputstream(“F:\\DarwishKeywordFramework\\LeadSuite.xlsx”);
XSSF工作簿=新XSSF工作簿(文件);
XSSFSheet sheet=workbook.getSheet(“TestSteps”);
迭代器行=sheet.Iterator();
while(row.hasNext()){
行迭代器=(行)行。下一步();
迭代器cellItr=rowIterator.cellIterator();
while(cellItr.hasNext()){
Cell Cell=(Cell)cellItr.next();
开关(cell.getCellType()){
case Cell.Cell\u类型\u字符串:
data.add(cell.getStringCellValue());
打破
case Cell.Cell\u类型\u布尔值:
data.add(cell.getBooleanCellValue());
打破
case Cell.Cell\u类型\u数值:
data.add(cell.getNumericCellValue());
打破
}
}
}
系统输出打印项次(数据);
对于(int i=3;i如果测试一直失败,则使用JavaScript Executor选择单选按钮
代码如下:
WebElement elm=(WebElement)((JavascriptExecutor)driver.executeScript(“return document.getElementById('idofRadioButton');”);”;
elm.click();您是否尝试了通过click\u radio=By.css选择器(“[name='VoucherType'][id='VoucherType'][type='radio']”);driver.findElement(click\u radio).单击()
?是的,试试上面的建议。另外,你还没有提到你的问题到底出在哪里?你有什么异常吗?无法自动执行可能有几个原因。我还试着运行你的代码,它在比较if(data.get(I).equals(“openbrowser”)时打开了一个Firefox浏览器
。这意味着至少它正在正确地将Excel读入ArrayList
。此外,我不知道您的属性文件是如何编写的,因此无法运行进一步的测试。我没有遇到任何异常。我使用了该方法。但我可能在错误的类中定义了它。您能确切地建议我在哪里写下该代码吗?我有e一个读取excel文件的类和一个完成所有操作的类。#登录用户名=/*[@id='username']密码=/*[@id='password']登录=/*[@id='loginForm']/form/div/div[4]/div/input#Leads凭证=html/body/nav/div[2]/div[2]/ul/li[2]/a create凭证=/*[@id='main']/a[1]Corporate=//*[@input[@value='Corporate']这是我的属性文件。我可以通过创建凭证。然后我不能选择凭证类型。