0

Я работаю с некоторыми сценариями тестов, где у меня есть несколько вариантов select2 внутри моих форм. Я пытаюсь заполнить поля select2 значениями, поступающими с моего сервера (запрос AJAX). Я пробовал использовать рекордер селена. Это не очень помогает. Он не понимает работу select2.Как выбрать опции из select2 с помощью селена IDE

Я помещаю свои команды ниже.

@driver.get(@base_url + "/app/customers") 
@driver.find_element(:link, "Add Customer").click 
@driver.find_element(:name, "customer[name]").click 
@driver.find_element(:name, "customer[name]").clear 
@driver.find_element(:name, "customer[name]").send_keys "Chinmay" 
Selenium::WebDriver::Support::Select.new(@driver.find_element(:xpath, "//*[@id=\"page-content\"]/div/div/div/div/form/div[4]/div[1]/div[4]/select")).select_by(:text, "label=Primary") 

И последняя строка бросает следующее сообщение об ошибке

[error] Option with label 'Primary' not found 

Мой HTML-код просто следующим

<select class="form-control amura-select2 select2-hidden-accessible" data-type="ds" data-name="address_types" data-default="only" style="width:100%;" required="required" name="customer[address_attributes][address_type]" aria-required="true" tabindex="-1" aria-hidden="true"> 
<option value="primary">Primary</option> 
</select> 

ответ

1
  1. Это не очень хорошая идея использовать селен IDE для кода создание

  2. Пожалуйста, подумайте о capybara или watir-webdriver. Тебе понравится.

  3. Попробуйте сделать что-то вроде

    wait = Selenium::WebDriver::Wait.new(:timeout => 10) #Let's wait until Ajax-request will be done 
    wait.until { @driver.find_element(xpath: "//option[@value='primary']") } #That's the waiting 
    dropdown = @driver.find_element(xpath: "//select[@data-name='address_types']") #Nice way to find your dropdown 
    select_list = Selenium::WebDriver::Support::Select.new(dropdown) #Let's create select_list out of dropdown-element 
    select_list.select_by(:text, 'Primary') #Finally. 
    
+0

Я знаю, плюсы и минусы использования селена IDE. У меня также есть решение, использующее Capybara. Но у меня есть другой вариант использования, для которого я хочу это сделать. Итак, у вас есть что-то полезное в отношении этого кода? –

+0

Чтобы быть ясным: код Selenium-webdriver приведен выше. Вам нужна версия IDE селена (на селенизе)? – Antesser

+0

Я нашел другое решение. Даже ваше решение сработало. Используя команду runScript, я запустил несколько скриптов select2. И он работает так, как я хотел. –

Смежные вопросы