Как перейти на сайт без URL?

303
29 апреля 2017, 20:09

Как сделать так, чтобы драйвер перешёл на другой сайт вместе с нажатием по элементу? Просто URL ка каждом аккаунте разный. Пример:

Brouser.Navigate().GoToUrl("https://vk.com/feed");
IWebElement mYSTR = Brouser.FindElement(By.LinkText("Моя Cторінка"));
mYSTR.Click();
IWebElement Myname = Brouser.FindElement(By.ClassName("page_name"));
// тут ошибка, потому что драйвер остался на https://vk.com/feed
Answer 1

В данном случае то, что URL изменяется, не имеет никакого значения. Дело в том, что Ваш тест, вероятнее всего, завершается быстрее, чем открывается новая страница по нажатию кнопки. Поэтому необходимо создать ожидание для данного события нажатия по веб-элементу.

Код может выглядеть следующим образом:

    Brouser.Navigate().GoToUrl("https://vk.com/feed");
    IWebElement mYSTR = Brouser.FindElement(By.LinkText("Моя Cторінка"));
    mYSTR.Click();
    // Создаем локатор для элементов, которые должны быть видимы при следующем действии
    By nextPageMainElementsLocator = By.ClassName("page_name"); // Здесь лучше 
              //поместить другой локатор. Но т.к. я не знаю, какая именно страница открывается, то лучше и не предложишь
    // Создаем ожидание
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(12.00));
    wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(nextPageMainElementsLocator));
    // Все, теперь мы точно знаем, что элементы, локатором для которых является nextPageMainElementsLocator, видимы.
    IWebElement Myname = Brouser.FindElement(By.ClassName("page_name"));

В заключение хочу порекомендовать Вам почитать про правильное написание локаторов. Также рекомендую посмотреть в сторону локаторов XPath.

READ ALSO
Какой метод в WPF срабатывает при смене UserControl в ContentControl?

Какой метод в WPF срабатывает при смене UserControl в ContentControl?

В приложении по клику на разные кнопки меню в ContentControl подгружаются разные вьюшкиВ каждой вьюьшке идет запрос к базе данных, каждую секунду...

422
Как сделать sprite во весь экран?

Как сделать sprite во весь экран?

Как сделать sprite во весь экран (Независимую размерность, унив?

303
Синхронизация процессов - RR строгое чередование для 2 процессов

Синхронизация процессов - RR строгое чередование для 2 процессов

Помогите написать на любом языке программу, которая

503
Начать игру по нажатию ENTER!

Начать игру по нажатию ENTER!

Это код игры в WindowsFormПри открытии игра сразу начинает работать но нужно что бы было по нажатию ENTER, как это сделать это я не понял

294