0

시나리오를 자동화하려고합니다. gmail 웹 사이트 (내 계정)에 로그인하고 특정 이메일 (Google 사이트)을 클릭 할 곳 전자 메일이 전송되었지만 내 문제는 Gmail에서 일부 시간이 5 분 이상 걸리므로이 요소가로드되지 않고로드가되지 않아서 CSS를 통해 클릭하려고하면 테스트 케이스가 실패합니다. 3-5 분 후에 Gmail로드 아이콘이 중지됩니다.테스트 케이스 오류로 인해 너무 많은 시간이 걸리는 Selenium webdriver (크롬 드라이버)

드라이버의 초기화 코드 :

 ChromeOptions options = new ChromeOptions(); 
     options.AddArgument("-incognito"); 
     options.AddArgument("--disable-extensions"); 
     DesiredCapabilities capabilites = DesiredCapabilities.Chrome(); 
     capabilites.SetCapability(ChromeOptions.Capability, options); 
     driver = new ChromeDriver(); 
     driver.Manage().Window.Maximize(); 

추가 힘 대기 :

 System.Threading.Thread.Sleep(30000); 
     testingdriver.Navigate().GoToUrl(gmail); 
     System.Threading.Thread.Sleep(30000); 
     testingdriver.Navigate().GoToUrl(gmail); 
     System.Threading.Thread.Sleep(30000); 

다음을 클릭 요소 :

IWebElement firstEmailOpening = testingdriver.FindElement(By.CssSelector("tr.zA:nth-child(1)")); 
firstEmailOpening.Click(); 

답변

0

이 쓰레기 수거는 악몽입니다. ​​webdriver를 사용하여 Gmail에 로그인 할 때이 접근법을 피하는 것이 좋습니다. 대신 Gmail 계정에 액세스 할 수있는 라이브러리를 사용할 수 있습니다 (자세한 내용은 here 참조).

+0

ExplicitWait 그래 내가 가까운 미래에 그들을 제거 할 것입니다 그것을 알고 사용 로딩 – Foaud

+0

좋아,하지만 그냥 Thread.sleep()에 대해 얘기하지 않고, webdriver를 사용하여 Gmail에 로그인하는 전체 개념은 꽤 나쁘다. 자습서를 보시고 일부 메일을 사용하여 Google 계정에서 이메일에 액세스하려고한다면 라이브러리. 어쨌든 행운을 비네. :) – acikojevic

+0

확실히 나는 그것이 나의 노력을 좁힐 수있는 지금 정말로 도움이되는 감사에 그것을 들여다 볼 것이다. – Foaud

0

사용 Implicit wait처럼 - 그것은 권장

driver.Navigate().GoToUrl(gmail); 
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(60)); 

는 30 초 정도 기다린 이러한 경우 Thread.Sleep(30000);은 당신이 언급 한 가정 사용하지 않는하지만 요소 2 초에서 볼 수. 28 초를 더 기다립니다. 스크립트가 느려집니다. 당신은 같은 문제에 직면하는 경우

후 현재 난 그냥 많은 하드 코딩 완전히하지 기다 gamil도이 제대로로드 할

new WebDriverWait(driver, TimeSpan.FromSeconds(45)).Until(ExpectedConditions.ElementExists(By.CssSelector("tr.zA:nth-child(1)"))); 
driver.FindElement(By.CssSelector("tr.zA:nth-child(1)")).Click(); 
+0

나는 그 2도 사용하려고 시도했다. testingdriver.Manage(). Timeouts(). SetPageLoadTimeout (TimeSpan.FromMinutes (4)); 2 초 후에도이 코드가 실행되고 사이트가로드되지 않습니다. 내가 명시 적 대기 상태에서 다시 보일지라도 나는 거기에서 어떤 작업을 할 수 있습니다. – Foaud

+0

어떤 오류가 발생 했습니까? 코드를 보여줄 수 있습니까? – NarendraR

+0

요소를 찾을 수 없지만 예외가 있지만 디버거를 사용하고 특정 시간 동안 로더 아이콘이 파비콘에서 멈추고 코드를 실행하면 요소를 찾습니다. – Foaud