2016-06-01 11 views
0

Chrome 브라우저에서 Selenium을 사용하여 웹 사이트 자동화에서 특정 URL을 기다리라는 요구가 있습니다. 사용자가 웹 사이트에서 온라인 지불을 수행합니다. Fro는 웹 사이트 사용자를 지불 게이트웨이로 리디렉션합니다. 사용자가 결제를 완료하면 게이트웨이는 Google 웹 사이트로 리디렉션합니다. 게이트웨이에서 사이트로의 리디렉션을 알리고 싶습니다. 셀렌의 특정 URL 대기

는 여기

driver.Url = "http://gmail.com" 
    Dim wait As New WebDriverWait(driver, TimeSpan.FromSeconds(10)) 
       wait.Until(Of IWebElement)(Function(d) d.FindElement(By.Id("next"))) 

이 그에 "다음"ID에 대한에 "gmail.com"을 기다립니다 탐색 vb.net 코드, 웹 페이지에서 "특정 아이디"를 기다립니다 예를 얻었다 페이지. 대신 특정 URL이로드 될 때만 코드를 계속 사용하려고합니다.

어떻게하면됩니까?

도와주세요.

답변

3

은 당신이 사용하는 어떤 언어 모르겠지만, 자바에서이 같은 수행 할 수 있습니다 귀하의 URL이로드 될 때까지

new WebDriverWait(driver, 20).Until(ExpectedConditions.UrlToBe("my-url")); 

기다려야합니다. 당신이 어떤 이유로 최신 셀레늄 버전을 사용할 수없는 경우

, 당신은 방법을 직접 구현할 수 있습니다

public static Func<IWebDriver, bool> UrlToBe(string url) 
{ 
    return (driver) => { return driver.Url.ToLowerInvariant().Equals(url.ToLowerInvariant()); }; 
} 
+0

나는 vb.net을 사용하고 있습니다. C#도 좋습니다. –

+0

나는 C# 변종에 대한 나의 대답을 편집했다. 나는 현재 VS가 설치되어 있지 않기 때문에 완전히 정확하지 않을 수도 있습니다. – Mobrockers

+0

나는 당신의 대답에 차이를 찾지 못했습니다. 또한 'urlToBe'오류가 발생했습니다 'OpenQA.Selenium.Support.UI.ExpectedConditions'의 구성원이 아닙니다 –

0

그들은 지금 예상 조건에 대한 더 많은 지원을 추가했습니다. webdriver 대기를 생성하고 URL에 값이 포함될 것으로 기대하십시오.

WebDriverWait wait = new WebDriverWait(yourDriver, TimeSpan.FromSeconds(5)); 
wait.Until(ExpectedConditions.UrlContains("/url-fragment"));