2017-11-02 11 views
0

나는 동일한 사용자 자격 증명으로 하루에 한 번만 영화를 평가할 수있는 시나리오에 갇혀 있습니다. 사용자가 동일한 영화 또는 계약서를 평가하려고하면 pop_up 오류가 표시됩니다.TestNG에서 조건부 실행 테스트를 구현하는 방법?

일단 영화/계약서가 평가되면 어떤 방식 으로든 구현하고 싶습니다. 등급 기능을 건너 뛰고 오류 팝업을 처리해야합니다. 내가 셀레늄 2017 일식 사용하고

, 크롬 브라우저 61.0 및 테스트 - 잉

같은에서 도와주세요.

감사합니다.

public class Ratings { 
String driverPath = "F:/ChromeDriver/chromedriver.exe"; 
public WebDriver driver; 
public Alert alert; 

@BeforeTest 
public void LaunchBrowser() throws InterruptedException { 
System.out.println("WebBrowser open"); 
System.setProperty("webdriver.chrome.driver","F:/ChromeDriver/chromedriver.e 
xe"); 
driver = new ChromeDriver(); 
driver.manage().window().maximize(); 
} 
@Test (priority = 1, alwaysRun = true) 
public void HomePageUSA() throws InterruptedException { 
    driver.navigate().to("Https://us.justdial.com"); 
    String expectedTitle = "Justdial US"; 
    String actualTitle = driver.getTitle(); 
    try 
    { 
     AssertJUnit.assertEquals(expectedTitle, actualTitle); 
    System.out.println("Test Passed"); 
    } 
    catch (Throwable e) 
    { 
    System.out.println("Test Failed"); 
    } 
    Thread.sleep(3000); 
} 
@Test (priority = 2, dependsOnMethods = {"HomePageUSA"}) 
public void Login() throws Exception{ 
    Thread.sleep(3000); 
driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/div/div/div 
/div[4]/aside/div/span/a[1]")).click(); 
driver.findElement(By.id("inputPassword3")).clear(); 
driver.findElement(By.id("inputPassword3")).sendKeys("[email protected] 
om"); 
driver.findElement(By.id("exampleInputPassword1")).clear(); 
driver.findElement(By.id("exampleInputPassword1")).sendKeys("justdial"); 
driver.findElement(By.xpath("/html/body/div[4]/div[2]/div[1]/section/div/div 
[1]/div/form/div[3]/div/button")).click(); 
Thread.sleep(1000); 
String expectedTitle = "Justdial US"; 
String actualTitle = driver.getTitle(); 
try 
{ 
    Assert.assertEquals(expectedTitle, actualTitle); 
System.out.println("Login Successful"); 
} 
catch (Throwable e) 
{ 
System.out.println("Login Failed"); 
} 
Thread.sleep(1000); 
driver.findElement(By.xpath(".//*[@id='us-jdnew- 
wrapper']/div[1]/div/header/div/div[1]/a[2]")).click(); 
Thread.sleep(2000); 
} 
    @Test (priority = 3) 
    public void Movies_Rating_page() throws Exception { 
    driver.findElement(By.xpath(".//*[@id='hotkeylnk106']/div[2]")).click(); 
    Thread.sleep(2000); 
    driver.findElement(By.xpath(".//*[@id='main- 

wrapper']/div/div/div[3]/div[2]/div/div[1]/div[1]/div/a/span/img")).click(); 
Thread.sleep(2000); 
driver.findElement(By.xpath(".//*[@id='main- 
wrapper']/div/div/div[2]/div[1]/ul/li[2]/span/a[2]/span[1]")).click(); 
Thread.sleep(3000); 
driver.findElement(By.xpath(".//* 
[@id='AlreadyRated']/div/div/div/section/div/a")).click(); 
System.out.println("Rating Page Redirection Successful"); 
Thread.sleep(3000); 
driver.findElement(By.xpath(".//*[@id='us-jdnew- 
wrapper']/div/form/div/div/div/div[2]/span[2]/span[10]")).click(); 
Thread.sleep(1000); 
driver.findElement(By.xpath(".//*[@id='us-jdnew- 
wrapper']/div/form/div/div/div/div[3]/div[3]/textarea")).sendKeys("Very nice 
movie, Must watch."); 
Thread.sleep(1000); 
driver.findElement(By.xpath(".//*[@id='us-jdnew- 
wrapper']/div/form/div/div/div/div[3]/div[4]/button[2]")).click(); 
Thread.sleep(3000); 
System.out.println("Rating Successfully Submitted"); 
+0

당신이 지금까지 가지고있는 코드를 공유하고 도움을 요청할 수 있습니까? –

+0

물론, 코드를 추가하고 있습니다. –

+0

@Vaibhav Singh을 귀하의 응용 프로그램에 사용하고 계신 분은이 사용자의 평점을 어떻게 알고 계십니까? 행동 변화 란 무엇입니까? 요소의 변화에 ​​대한 xpath를 보여줄 수 있습니까? – user1207289

답변

1

당신은 dependsOnMethods 같은 시험 방법의 방법 및 태그 방법을 만들 수 있습니다. 당신이 아래와 같이 달성 할 수있다 (내가 제일 제공 한 정보를 기반으로 대답하려고)

아이디어는 여기 당신의 평가 조건이 충족 될 때 Movies_Rating_page()가 TestNG를 건너 뛴 될 수 있도록 isMovieRated 그렇지 않으면, isMovieRated를 예외를 발생해야한다는 것입니다 그냥 true을 반환하며 건너 뛰지 않아야합니다.

  1. 위의 코드는 테스트되지 않습니다
     @Test 
         public static boolean isMovieRated(String locator) { 
    
        //check in "if" below that element has already clicked or is equal to something. I used 'AlreadyClicked' just to 
        give an idea as I dont have your application information. 
    
        if (driver.findElement(By.xpath(locator).getText()=="AlreadyClicked"){ 
        throw new RuntimeException(); 
        } 
        else { 
    
        return true; 
    
        } 
    } 
    

    는 이제 Movies_Rating_page()

    @Test (priority = 3,dependsOnMethods = { "isMovieRated" }) 
        public void Movies_Rating_page() throws Exception { 
    
        public static String YourLocator = "/html/body/...." 
        Ratings.isMovieRated(YourLocator); 
        .. 
        } 
    

    here 모양을하는 것은

    이 주 TestNG를 dependsOnMethods에 대한 추가 정보를 원하시면 링크입니다.

  2. Movies_Rating_page()에서 등급을 확인하는 것 이외의 일을하는 경우 예외가 발생하면 모든 것이 건너 뛸 수 있으므로 이러한 것들을 구분해야합니다.

    희망이 도움이됩니다.

+0

감사합니다. 내 수업 시간에 똑같이 해보 라. –