【问题标题】:How to pass platform value through parameter like Vista, WIndows, Mac如何通过 Vista、Windows、Mac 等参数传递平台值
【发布时间】:2017-08-08 11:42:23
【问题描述】:

我正在尝试使用 Selenium 网格运行我的脚本,我可以在其中参数化节点 IP 地址但无法传递平台值。

谁能帮我找出解决方案,如何通过参数传递平台值。

我不想传递像 Windows、Mac 或 Vista 这样的硬编码值。需要通过Excel。

代码:

package package1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class Test_excel_node_reading {
    public class Universal_Music_grup {
         WebDriver driver;
            String baseUrl, nodeUrl;
         @Test(dataProvider="UMG")
         public void Universal_music_grp(String nodeUrl1) throws InterruptedException {
           //driver.get(baseUrl);

         baseUrl = "http://www.tedbaker.com/";
         //nodeUrl = "http://192.168.163.52:5566/wd/hub//";
         nodeUrl = nodeUrl1;
         System.out.println(nodeUrl);
         //nodeUrl = "http://192.168.102.42:5566/wd/hub//";
         //nodeUrl = "http://192.168.160.247:5566/wd/hub//";
         //nodeUrl = "http://192.168.162.83:5566/wd/hub//";
         DesiredCapabilities capability = DesiredCapabilities.chrome();
         capability.setBrowserName("chrome");
         capability.setPlatform(Platform.WIN10);
         driver = new RemoteWebDriver(new URL(nodeUrl), capability);

                    driver.get("http://www.universalmusic.com");

                    driver.findElement(By.xpath(".//*[@id='main-menu-open']/span")).click();

                    Thread.sleep(1000);
                    driver.findElement(By.xpath(".//*[@id='main-menu-container']/div[2]/ul/li[3]/a/h3")).click();
                    driver.findElement(By.xpath(".//*[@id='section-items']/div/ul/li[1]/a/div")).click();
                    driver.findElement(By.xpath(".//*[@id='detail-main']/div[2]/ul/li/a")).click();
                     Thread.sleep(2000);
                     String MainWindow=driver.getWindowHandle();            
                     System.out.println(MainWindow);
                   Set<String> s1=driver.getWindowHandles();
                   System.out.println(s1);
                Iterator<String> i1=s1.iterator();           

                while(i1.hasNext())                    
                {           
                   String ChildWindow=i1.next();     
                   System.out.println("test - "+ ChildWindow);

                   if(!MainWindow.equalsIgnoreCase(ChildWindow))                

                           driver.switchTo().window(ChildWindow); 
                           Thread.sleep(2000);
                           driver.findElement(By.xpath("html/body/div[3]/nav/div/div/button")).click();
                           WebElement Online_services=driver.findElement(By.xpath("html/body/nav/div/ul[1]/li[3]/a"));
                           WebElement Online_mastering=driver.findElement(By.xpath("html/body/div[1]/ul/li[2]/ul/li[2]/a"));
                           Online_mastering.click();
                           Thread.sleep(2000);
                           driver.findElement(By.xpath("html/body/div[4]/nav/div/div/button")).click();
                           driver.findElement(By.xpath("html/body/div[1]/ul/li[1]/ul/li[3]/ul/li[2]/a")).click();
                           driver.findElement(By.xpath("html/body/div[4]/main/div/div[1]/a[1]")).click();

                            driver.findElement(By.xpath(".//*[@id='contactForm']/textarea")).sendKeys("Nice songs");
                            driver.findElement(By.xpath(".//*[@id='contactForm']/input[5]")).sendKeys("Tina Malhotra");
                            driver.findElement(By.xpath(".//*[@id='contactForm']/input[6]")).sendKeys("tinamalhotra325@gmail.com");


                        }
                }
                logger.log(LogStatus.PASS, "Universal_music_grp,Book Music Session Test case passed");
                    }
         @Test(priority=2)
         public void Verify_Title () throws InterruptedException {  
             logger = extent.startTest("Universal_music_grp");
             logger.log(LogStatus.INFO, "Launching the webdiste >>> http://www.universalmusic.com ");  
             driver.get("http://www.universalmusic.com");
             String Expected_Title="Universal";
             String ACtual_title=driver.getTitle();
             driver.findElement(By.xpath("ABD")).click();
             if(Expected_Title==ACtual_title)
             {
                 logger.log(LogStatus.INFO, "Title of website is Universal Music group ");  
             }
             else
                 System.out.println("Wrong Title");
         }

  @DataProvider(name="UMG")
    public Object[][] loginData() throws BiffException, IOException {
        Object[][] arrayObject = getExcelData("C:\\Java_practice\\UMG.xls","Sheet1");
        return arrayObject;
    }


    public String[][] getExcelData(String fileName, String sheetName) throws BiffException, IOException {
        String[][] arrayExcelData = null;
        try
        {
            FileInputStream fs = new FileInputStream(fileName);
            Workbook wb = Workbook.getWorkbook(fs);
            Sheet sh = wb.getSheet(sheetName);

            int totalNoOfCols = sh.getColumns();
            int totalNoOfRows = sh.getRows();
            System.out.println(totalNoOfCols);
            System.out.println(totalNoOfRows);

            arrayExcelData = new String[totalNoOfRows-1][totalNoOfCols];

            for (int i= 1 ; i<totalNoOfRows; i++) {

                for (int j=0; j<totalNoOfCols; j++) {
                    arrayExcelData[i-1][j] = sh.getCell(j, i).getContents();
                }

            }
        }

    catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
        e.printStackTrace();
    } catch (BiffException e) {
        e.printStackTrace();
    }
            return arrayExcelData;

    }


    }
}

【问题讨论】:

    标签: java selenium-grid2


    【解决方案1】:

    你可以这样做

    //Value would be passed via the JVM argument
    // For e.g., : -Dplatform=VISTA
    String platform = System.getProperty("platform");
    DesiredCapabilities capability = DesiredCapabilities.chrome();
    capability.setPlatform(Platform.fromString(platform));
    

    随意替换从 JVM 参数读取值的逻辑,用从 excel 电子表格读取它的逻辑。

    【讨论】:

    • 你能再具体一点吗? “这个逻辑对我不起作用”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多