2016-06-01 4 views
0

У меня есть требование ждать определенного URL-адреса в автоматизации веб-сайта, используя Selenium в браузере Chrome. Пользователь будет делать онлайн-платеж на нашем веб-сайте. Fro наш пользователь сайта перенаправляется на платежный шлюз. Когда пользователь завершит платеж, шлюз перенаправится на наш веб-сайт. Я хочу получить уведомление о перенаправлении со шлюза на наш сайт.Ждать определенного URL-адреса в селене

я получил пример, который ждет «Particular Id» на веб-странице, здесь vb.net код

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"))) 

Это переходит в «gmail.com» и ждет ID «рядом» на том, что стр. Вместо этого я хочу продолжить код только при загрузке определенных URL-адресов.

Как я могу это сделать?

Пожалуйста, помогите мне.

ответ

3

Я не уверен, что язык вы используете, но в Java вы можете сделать что-то вроде этого:

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

ждать, пока загрузится ваш 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"));