2016-08-21 13 views
1

naukri.comのすべてのタブを開こうとしていますが、「会社」タブに達した後にエラーが発生しています。 「サービス」タブにアクセスできず、さらに実行されていません。 このコードで私を助けてください。Selenium WebDriver Loopが動作しません

Jenyミシュラ

driver.get("http://www.naukri.com"); 
    List<WebElement> labels =driver.findElements(By.className("mTxt")); 
    System.out.println(labels.size()); 
//System.out.println(labels.indexOf(1));//get the name of labels present in the webpage 
    for(WebElement we : labels){ 
     System.out.println(we.getText()); 
     } 
    //for(int i=0;i<=labels.size();i++){//get the name of labels present in the webpage 
     //System.out.println(labels.get(i).getText()); 
    //} 
    WebElement label1= driver.findElement(By.xpath("html/body/div[2]/div/ul/li[1]/a/div")); 
    Actions action = new Actions(driver); 
    action.moveToElement(label1).perform(); 
    Thread.sleep(3000); 
Iterator<WebElement> itr=labels.iterator(); 
WebElement currentlabel = null; 

//if(currentlabel.equals(companies)){ 
    //action.moveToElement(companies); 
    //driver.close(); 
//} 
    /* String homepage=driver.getWindowHandle(); 
    System.out.println(homepage); 
    System.out.println(driver.getTitle()); 
    Set<String> allwindows= driver.getWindowHandles(); 
    System.out.println(allwindows.size()); 
    Iterator<String> itri=allwindows.iterator(); 
    String currentwindow; 
    while(itri.hasNext()){ 
     currentwindow=itri.next().toString(); 
     System.out.println(currentwindow); 
     if(!currentwindow.equals(homepage)){ 
      driver.switchTo().window(currentwindow); 
      driver.close(); 
      Thread.sleep(3000); 
     }*/ 
while(itr.hasNext()){ 
    currentlabel=itr.next(); 

    if(!currentlabel.equals(label1)){ 
    action.moveToElement(currentlabel).build().perform(); 

    Thread.sleep(5000); 

    WebElement companies= driver.findElement(By.xpath("html/body/div[2]/div/ul/li[3]/a/div")); 
    Thread.sleep(3000); 
companies.sendKeys(Keys.CONTROL+"w"); 
driver.navigate().back(); 

    WebElement label3= driver.findElement(By.xpath("html/body/div[2]/div/ul/li[4]/a/div")); 
    if(!currentlabel.equals(label3)){ 
     action.moveToElement(currentlabel).build().perform(); 
     Thread.sleep(5000); 
    } 
    //action.moveToElement(label3).build().perform(); 
    //Thread.sleep(5000); 
    driver.close(); 
    } 
     //System.out.println(labels.); 
    } 

} 

}

+1

あなたのコードは本当に分かりにくいです。それをきれいにして再ポストすることが可能です。 – Grasshopper

答えて

0

私はあなたがマウスオーバーを実行しようとし、すべてのtopiconメニューをクリックしようとしていると仮定します。はいの場合、ちょっとしたコードを微調整しました。 Thread.sleepコマンドは避けてください。これはChromeブラウザでのみテストされています。

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

    List<WebElement> topIconLabels = driver.findElements(By.className("mTxt")); 
    System.out.println(topIconLabels.size()); 

    for (WebElement labels : topIconLabels) { 
     System.out.println(labels.getText()); 
    } 

    Actions action = new Actions(driver); 
    Iterator<WebElement> itr = topIconLabels.iterator(); 
    WebElement currentlabel = null; 
    while (itr.hasNext()) { 
     currentlabel = itr.next(); 
     action.moveToElement(currentlabel).build().perform(); 
     currentlabel.click(); 
     Thread.sleep(5000); 
     // when login label is clicked, it doesn't open in a new tab 
     if (currentlabel.getText().equalsIgnoreCase("login")) { 
      driver.findElement(By.id("loginLB")).findElement(By.id("closeLB")).click(); 
      Thread.sleep(2000); 
     } else { // closing the newly opened tabs 
      Robot robot = new Robot(); 
      robot.keyPress(KeyEvent.VK_CONTROL); 
      robot.keyPress(KeyEvent.VK_W); 
      Thread.sleep(2000); 
     } 
    } 
    driver.quit(); 
関連する問題