使用Selenium自动化Google Calculator时无法点击两位数字

时间:2016-03-02 19:50:24

标签: selenium

我需要在哪里编写代码 a)访问www.google.com并搜索“计算器”。在结果中,您将看到浏览器中的计算器。 b)使用java代码从xls读取Num1 c)点击谷歌计算器中的Num1

Excel文件很简单,看起来像这样。

NUM1

7

95

我希望你们的人都能理解。 第一排Num1 第二排2 第三行是95

使用@Test我写了一个代码 问题是,我可以点击Num1 7而不是95。 此外,如果我的num1也是2,它会引发我的错误。请帮忙。

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class Exercise3 {
    String part1 = "//*[@id='cwbt";
    String part2 = "']/div/span";



        @Test(dataProvider="getData")
        public void calculator(String num1, String num2, String operation, String expectedResult){
            WebDriver d = new FirefoxDriver();
            d.manage().window().maximize();
            d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            d.get("https://www.google.co.in/?gfe_rd=cr&ei=2ArXVu7RGafG8AfjsKPgDQ&gws_rd=ssl#q=calculator");
            //calculator box
            //*[@id='cwbt13']/div/span
            //*[@id='cwbt23']/div/span
            //*[@id='cwbt33']/div/span
            //*[@id='cwbt43']/div/span
            WebElement box = d.findElement(By.xpath("//*[@id='cwmcwd']"));
            for(int i=13;i<=46;i++){
                String num = d.findElement(By.xpath("//*[@id='cwbt"+i+"']/div/span")).getText();
                if(num.equals(num1)){
                    d.findElement(By.xpath("//*[@id='cwbt"+i+"']/div/span")).click();
                    break;
                }
            }

                }
        @DataProvider
        public Object[][] getData(){

        Xls_Reader xls = new Xls_Reader("E:\\Pessoal\\QTPSelenium\\Excel\\Calculator.xlsx");
        int rows = xls.getRowCount("Addition");
        int cols = xls.getColumnCount("Addition");

        Object data[][] = new Object[rows-1][cols-2];

        for(int rNum=2;rNum<=rows;rNum++){
            for(int cNum=0;cNum<cols-2;cNum++){
                System.out.println(xls.getCellData("Addition", cNum, rNum));
                data[rNum-2][cNum] = xls.getCellData("Addition", cNum, rNum);

            }
        }
    return data;
}
}

1 个答案:

答案 0 :(得分:0)

尝试以下代码/我已根据Java Lang更新

 FirefoxDriver driver;        
    driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
    driver.get("https://www.google.co.in/?gfe_rd=cr&ei=2ArXVu7RGafG8AfjsKPgDQ&gws_rd=ssl#q=calculator"); 
    String strJavaScript = "document.getElementById('cwos').textContent= " + num1.trim() + " " + operation.trim() + " " + num2.trim() ;
    Object obj;
    //org.openqa.selenium.JavascriptExecutor.class.
    obj = driver.executeScript(strJavaScript, (Object) null);
    driver.findElement(By.xpath(".//*[@id='cwbt45']/div/span")).click();
    String answer = driver.findElement(By.id("cwos")).getText();
    if (expectedAnswer == null ? answer == null : expectedAnswer.equals(answer)) {
        System.out.println("Expected answer and given answer are same.");
    }
    else        
                    System.out.println("Expected answer and given answer are not same.");
    System.out.print(answer);   

如果有任何问题,请告诉我。