Перейти к содержимому

Фотография

Выпадающий список Selenium C#


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 kramberg

kramberg

    Новый участник

  • Members
  • Pip
  • 12 сообщений


Отправлено 08 ноября 2016 - 14:35

Добрый вечер, в силу малого опыта возникла проблема, прошу помощи. Есть выпадающий список вида:
 

<div class="box ">
  <select>
     <option value=""></option>
 
     <optgroup label="Претенденты">
         <option value="78290">Тургенев Илья Олегович</option>
         <option value="78307">Трофимов Евгений Петрович</option>
         <option value="78324">Иванников Эдгар Арсеньев</option>
     </optgroup>
  </select>
</div>
 
В IDE команда выглядит:
 
<tr>
<td>select</td>
<td>//select</td>
<td>Тургенев Илья Олегович</td>
</tr>
 
При экспорте в С# получается:
 
new SelectElement(driver.FindElement(By.XPath("//select"))).SelectByText("Тургенев Илья Олегович");
 
Но валится с ошибкой:
 
Test method XXX threw exception: 
System.NotImplementedException: The method or operation is not implemented.
 
Пытался самостоятельно 2 дня гуглить решения, найти работающее не смог, есть у кого мысли что я делаю не так?

  • 0

#2 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 09 ноября 2016 - 01:52

посмотрите документацию по

OpenQA.Selenium.Support.UI.SelectElement

https://seleniumhq.g...lectElement.htm

 

пример

http://stackoverflow...-an-option-in-c


  • 0

#3 kramberg

kramberg

    Новый участник

  • Members
  • Pip
  • 12 сообщений


Отправлено 09 ноября 2016 - 14:19

Спасибо, поковырял возможные варианты, к решению пока не пришёл. Что я делал:
 

- отсюда http://stackoverflow...an-option-in-c 
написал код:

 

 var pretenders = driver.FindElement(By.XPath("//select"));
 
               var selectElement = new SelectElement(pretenders);
 
               selectElement.SelectByText("Трофимов Евгений Петрович"); 

Установил 

  • NuGet package "Selenium.WebDriver
  • NuGet package "Selenium.Support"

Ошибка не пропала, поведение такое же.

Так же пробовал такой вариант:
 

SelectElement select = new SelectElement(driver.FindElement(By.XPath("//select")));
           
select.SelectByText("Трофимов Евгений Петрович");
 
Понимаю, что скорее всего допускаю очевидные ошибки, прошу поделиться опытом и старших товарищей.

  • 0

#4 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 09 ноября 2016 - 16:15

Чтоб не быть голословным, взял и запустил.

Отлично работает такой код.

Взял HTML прям из первого поста.

  • WebDriver 3.0.0
  • Chrome последний (54.xxx)
  • ChromeDriver 2.25
  • Запускал в VS2013, тесты в формате MSTest

Проблема в чем-то другом, не в коде селекта. Посмотрите трейс ошибки.


  • 0

#5 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 09 ноября 2016 - 18:59

скорее всего больше чем один

driver.FindElement(By.XPath("//select"))


  • 0

#6 gurkini

gurkini

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Гуркин Иван

Отправлено 10 ноября 2016 - 07:25

  • WebDriver 3.0.0

Ваша проблема видимо связана с WebDriver попробуйте использовать версию 2.53.


  • 0

#7 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 10 ноября 2016 - 12:15

 

  • WebDriver 3.0.0

Ваша проблема видимо связана с WebDriver попробуйте использовать версию 2.53.

 

Вы перепутали меня с ТС)) У меня как раз нет проблем))


  • 0

#8 gurkini

gurkini

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Гуркин Иван

Отправлено 10 ноября 2016 - 12:25

"Вы перепутали меня с ТС)) У меня как раз нет проблем))"

 

Я адресовал это сообщение к ТС. Если бы он более подробно описал версии используемый WebDriver, браузера и т. д. было бы проще разобраться.

Ошибка связана с тем, что в драйвере не реализован данный метод, собственно об этом он и сообщает.

 

Интуиция подсказывает что драйвер 3.0.x?

 

Посмотрите тут:

https://github.com/S...q=selectbytext


  • 0

#9 kramberg

kramberg

    Новый участник

  • Members
  • Pip
  • 12 сообщений


Отправлено 10 ноября 2016 - 13:01

WebDriver 2.53.1.
FireFox 46.0.1

VS Community

Библиотеки:
 

using System;
using System.Configuration;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;

Возможно имеет смысл обновиться и попытаться с WebDriver 3.0.0 ? В общем если глобально, есть подозрение, что упускаю какую-то супер очевидную для всех мелочь, но т.к. я по факту ещё нуб, для меня это пока тайна и будет откровением) 

В дополнение, после завала теста StackTrace указывает в том числе на код:

using System;
using OpenQA.Selenium;
 
namespace DocumentovedUITests
{
    internal class SelectElement
    {
        private IWebElement webElement;
 
        public SelectElement(IWebElement webElement)
        {
            this.webElement = webElement;
        }
 
        internal void SelectByText(string v)
        {
            throw new NotImplementedException();
        }
    }
}

а именно на строку " throw new NotImplementedException();"

  • 0

#10 gurkini

gurkini

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Гуркин Иван

Отправлено 10 ноября 2016 - 13:37

 

WebDriver 2.53.1.
FireFox 46.0.1

VS Community

Библиотеки:
 

using System;
using System.Configuration;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;

Возможно имеет смысл обновиться и попытаться с WebDriver 3.0.0 ? В общем если глобально, есть подозрение, что упускаю какую-то супер очевидную для всех мелочь, но т.к. я по факту ещё нуб, для меня это пока тайна и будет откровением) 

 

// Инициализиция
var driver = new FirefoxDriver();
 
Также проверьте что библиотека WebDriver соответствует используемой версии Framework net35 или net40
 
И убедитесь что версия драйвера 2.53.1 поскольку NuGet по умолчанию предлагает 3.0.0.

  • 0

#11 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 10 ноября 2016 - 14:11

Ну так логично.

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

И берется именно он, а не из Селениума.

Иначе бы в коде теста была директива ```using OpenQA.Selenium.Support.UI```, где и лежит настоящий SelectElement.


  • 1

#12 kramberg

kramberg

    Новый участник

  • Members
  • Pip
  • 12 сообщений


Отправлено 10 ноября 2016 - 14:53

Ну так логично.

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

И берется именно он, а не из Селениума.

Иначе бы в коде теста была директива ```using OpenQA.Selenium.Support.UI```, где и лежит настоящий SelectElement.

 

Стыдно говорить вслух, но да, сработало) Огромное спасибо всем старшим товарищам за помощь, сегодня я стал немного умнее.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных