Selenium2Library Аналог selectByVisibleText(value)

Добрый день, коллеги, начал осваивать Robot Framework и столкнулся с такой проблемой, не могу найти аналога для построения такой конструкции

        Select someSelect = new Select(driver.findElement(By.id("select")));
        someSelect.selectByVisibleText(value);

Сталкивался кто нибудь с такой проблемой? Понимаю, что наиболее разумно дописать библиотеку - но немного боязно и Питон знаю плохо, да RF еще не очень

def select_from_list_by_label(self, locator, *labels):

https://github.com/rtomac/robotframework-selenium2library/blob/master/src/Selenium2Library/keywords/_selectelement.py

Ну а я просто добавлю еще парочку ссылок на документацию http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html, где можно искать кейворды. В принципе большинство кейвордов уже реализовано. Так что надо просто найти нужный и писать самому ничего не надо.

А еще некоторой функциональности все равно не хватает, это касается ActionChain. Так вот тогда может помочь вот эта библиотека, которая расширяет selenium2library GitHub - hmalphettes/robotframework-selenium2library-extensions: Action Chains, Select IFrame and miscallenous keywords to add to robotframework-selenium2library и реализует следующие кейворды:

Chain Sleep
Chain Click
Chain Click And Hold
Chain Drag And Drop
Chain Key Up
Chain Key Down
Chain Move By Offset
Chain Move To Element
Chain Move To Element With Offset
Chain Release
Chain Send Keys
Chain Send Keys To Element 

Еще такой вопрос - а можно ли как то в стандартной Open Browser - включить синтезированные события?

Увы такого нет написанного, надо дописывать самостоятельно.

Смущает вот эта строчка в документации к библиотеке. К команде open browser
This is useful for doing things like specify a proxy server for internet explorer or for specify browser and os if your using saucelabs.com. ‘desired_capabilities’ can also be a dictonary (created with ‘Create Dictionary’) to allow for more complex configurations.

select_from_list_by_label - что то не хочет работать с Select-ом вида

<select id="all-filter-col" class="src-list" size="10" multiple="multiple">
   <option value="MAI_EVENT_CODE">Maintenance event number</option>
   <option value="MAI_ASSET_FAMILY_CODE">Engine family</option>
   <option value="MAI_ASSET_VARIANT_CODE">Engine variant</option>

Ах да, естественно что тест-дизайнер, не хочет писать, value, а пишет отображаемый текст

Если не работает, то это не проблема Selenium2Library, по крайней мере ее актуальной версии.

    def select_from_list_by_label(self, locator, *labels):
     
        if not labels:
            raise ValueError("No value given.")
        items_str = "label(s) '%s'" % ", ".join(labels)
        self._info("Selecting %s from list '%s'." % (items_str, locator))

        select = self._get_select_list(locator)
        for label in labels:
            select.select_by_visible_text(label)

А что тебя тут смущает? В чем вопрос?

Код вызова в студию, плиз

Сорри, что пошло такое разделение - попробовал записать через Selenium IDE

 # ERROR: Caught exception [ERROR: Unsupported command [addSelection | id=all-filter-col | label=Maintenance event source reference]]

Что касается браузера, то решил сделать так:

${desire_capabilites}	Create Dictionary	nativeEvents	False	
Open Browser	https://web/	firefox	ff_profile_dir=${profile}	desired_capabilities=${desire_capabilites}

Да эта ошибка в Selenium IDE, записывается при простом клике по option у Select-а и при переводе на Python

Вы определитесь:
Сначала вы спрашиваете как работать с ддл в Selenium2Library RobotFramework.
Потом пишете что нужные кейворды не работают.
Потом про то, что IDE не портирует работу с ддл в Python+WebDriver.

Все это как-то сбивает с толку.

1 лайк

Поддерживаю @vmaximv. @alshipovalov распиши более подробно, что у тебя осталось и что не получается и не забудь, что чем больше информации тем лучше Ответы на вопросы - automated-testing.info а также не мешай все в одну кучу. Если появляется какие-то другие проблемы, то лучше создавать отдельные топики.

Сначала вы спрашиваете как работать с ддл в Selenium2Library RobotFramework

Это где же я это спрашивал, я спросил как можно портировать кусок кода написанный на Java, для Python.
Поясню, что я имею в виду:

  1. Есть кусок кода, написанный на Java и работающий для определенного Select-а
  2. Есть код Python библиотеки, который не работает для данного Select
  3. Есть Selenium IDE, которая может записать и портировать работу с Select для Java, но не может для Python
    Пункт 3 был выполнен мной исключительно в целях эксперимента.

Что бы тема имела логическое завершение. Не смотря, на то, что ошибка валилась при работе с Select-ом, на самом деле, выбор option проходил удачно - просто не отрабатывала команда Click button (которая и должна была добавить option в новый Select). Замена на Click Element - решила проблему.