2017-12-21 21 views
-2

これは、ログインポップアップのスナップショットです。私はnavigateコマンドを理解するためにこのコードを書きましたが、ブラウザが開くと、表示されるログインポップアップがあります。 classnameまたはxpathを使用して閉じようとしましたが、タイムアウト例外が発生します。のjava、セレンウェブドライバ

この場合、明示的に待機する必要がありますか?問題が何であるか把握する手助けをしてください。

public class TestNavigateCommands { 
WebDriver driver; 
public void invokeBrowser(){ 
    try { 
     System.setProperty("webdriver.chrome.driver", "/Users/himaja/Documents/chromedriver"); 
     ChromeOptions options=new ChromeOptions(); 
     options.addArguments("start-fullscreen"); 
     driver=new ChromeDriver(options); 
     driver.manage().deleteAllCookies(); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS); 
     navigateCommands(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
public void navigateCommands(){ 
    try { 
     driver.navigate().to("https://www.flipkart.com/"); 
     Thread.sleep(4000); 
     driver.findElement(By.className("2AkmmA _29YdH8")).click(); 
     //driver.findElement(By.xpath("//*[@class='_2AkmmA _29YdH8']")).click(); 
     driver.findElement(By.xpath("//span[starts-with(text(),'Applicances')]")).click(); 
     driver.findElement(By.xpath("//span[contains(text(),'Microwave Ovens')]")).click(); 
     Thread.sleep(2000); 
     driver.navigate().back(); 
     Thread.sleep(2000); 
     driver.navigate().forward(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



} 


public static void main(String[] args) { 
    TestNavigateCommands test1= new TestNavigateCommands(); 
    test1.invokeBrowser(); 

} 

}

例外:

[43.366] [SEVERE]:レンダラーからのメッセージを受信タイムアウトしました:37.150 [43.373] [SEVERE]:レンダラーからのメッセージを受信タイムアウトしました: -0.007 org.openqa.selenium.TimeoutException:タイムアウト

+0

こんにちはHimaja :)あなたは「動作しませんでした」とはどういう意味ですか?何も起こらない?例外はありますか?犬のGIFが画面にポップアップして笑いますか? – mrfreester

+0

私はタイムアウトの例外があります。ポップアップは閉じず、他の機能は実行されません。 – Himaja

+0

あなたの質問にタイムアウト例外を追加できますか?おそらくその中に貴重なデバッグ情報があります。 – mrfreester

答えて

0

それが役立つことがあり、このコードを試してみてください。

public class TestNavigateCommands { 
    public static void main(String[] args) throws InterruptedException { 
      try {     
        System.setProperty("webdriver.chrome.driver", "/Users/himaja/Documents/chromedriver"); 
        WebDriver driver = new ChromeDriver(); 
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
        WebDriverWait wait=new WebDriverWait(driver,50); 

        driver.manage().window().maximize(); 

        driver.navigate().to("https://www.flipkart.com/");   
        driver.findElement(By.xpath("//button[contains(@class,'YdH8')]")).click(); 


        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@title='Appliances']//span")))); 
        driver.findElement(By.xpath("//a[@title='Appliances']//span")).click();   

      } catch (Exception e) { 
       e.printStackTrace(); 
      }   
     } 
    } 
+0

私はこのコードを試してみました。ページが読み込まれるまでに時間がかかり、最終的にはうまくいきました。助けてくれてありがとう。 – Himaja

0
public class TestNavigateCommands { 
WebDriver driver; 

public void invokeBrowser() { 
    try { 
     System.setProperty("webdriver.chrome.driver", "/Users/himaja/Documents/chromedriver"); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("start-fullscreen"); 
     driver = new ChromeDriver(options); 
     driver.manage().deleteAllCookies(); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS); 
     navigateCommands(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public void navigateCommands() { 
    try { 
     driver.navigate().to("https://www.flipkart.com/");   
     driver.findElement(By.xpath("//div[@class='_3Njdz7']//button[@class='_2AkmmA _29YdH8']")).click(); 
     WebDriverWait wait = new WebDriverWait(driver, 30); 
     wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@title='Appliances']//span")))); 
     driver.findElement(By.xpath("//a[@title='Appliances']//span")).click();   
     Thread.sleep(2000); 
     driver.navigate().back(); 
     driver.navigate().forward(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+1

あなたのコードを正しくフォーマットして、答えにいくつかの文脈を追加することができますか(つまり、あなたのコードが問題をどのように修正するかを簡単に説明してください)? – roelofs

+0

このコードを使用して試してみることができます。あなたがまだ同じ問題を抱えている場合は教えてください。 –

+0

答えにあなたのコードを書式化してください。 – roelofs

関連する問題