0

フォームの中に複数のselect2オプションがあるテストケースのシナリオで作業しています。私はselect2のボックスに値を私のサーバーから来て(AJAX要求)を記入しようとしています。 セレンレコーダーを使ってみました。それは良い助けではありません。それはselect2の働きを理解していません。セレンIDEの助けを借りてselect2からオプションを選択する方法

私は自分のコマンドを以下に載せています。次のと同じように

@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コードを投げているがあるコードのためのセレンIDEを使用するのは良い考えではありません

<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. 作成

  2. カピバラやワイパーウェブドライバーについて考えてみてください。あなたはそれを好きになるでしょう。

  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を使用して解決策を持っています。しかし、私はこれをやりたいユースケースがもう1つあります。あなたはこのコードに関して何か助けになっていますか? –

+0

明確にするために:セレンのwebdriverのコードは上に提供されています。セレンのIDEバージョンが必要ですか? – Antesser

+0

私は別の解決策を見つけました。あなたのソリューションでさえも効果があります。 runScriptコマンドを使用して、select2スクリプトをいくつか実行しました。そして、私が望むように働いています。 –

関連する問題