Selenium webdriver 如何在关键字框架中自动化单选按钮?

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

我的web应用程序中有一组单选按钮。我尝试了几乎所有的自动化建议,但没有被选中。我使用的是关键字框架,数据将通过excel文件读取

这是我的关键字代码:

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']这是我的属性文件。我可以通过创建凭证。然后我不能选择凭证类型。