1

Android デバイスでオプション リストを見ています。オプション コードは次のようになります。

<div class = "addMode">
 <label for ="activityType">Activity Type</label>
 <div class="dataRow activityType">
  <select id="activityType" class="valid">
   <option value ="1" selected="selected">Appointment</option>
   <option value ="2">Call</option>
   <option value ="3">To-Do</option>
  </select>
 </div>
<div>

最初にxpathを試しました:

el = @d.find_elements(:xpath, "//*[@id='activityType']/option")
el.each do |t|
   if t.text() == 'Call' then
      t.click
      break
   end
end

これは、ポップアップ メニューから [呼び出し] アクティビティを選択するために機能しますが、選択されるとすぐに現在のページを終了し、呼び出し元のページに戻ります。

次に試しました:

el = @d.find_element(:id, "activityType")
el.click 
el_opt = el.find_elements(:tag_name, "option")
el_opt.each.do |t|
   if t.text() == 'Call' then
       t.click
       break
   end
end

これも、選択を行ってから画面を終了するという同じ結果になりました

その後、次のようになりました。

opt = Selenium::WebDriver::Support::Select.new(@d.find_element(:xpath, "//*[@id='activityType']"))
opt.select_by(:text, "Call")

これも選択を行い、ページを終了しました

それから、私はタッチアクションを使用できるかもしれないと考えました。私はまだRubyに不慣れで、タッチスクリーンのAPIを間違って読んでいる可能性が最も高いです。私は次のことを試しました:

TapObject = Selenium::WebDriver::TouchScreen.new(@d.find_element(:id, "activityType"))
el = @driver.find_element(:id, "activityType")
el_opt = el.find_elements(:tag_name, "option")
el_opt.each do |t|
  if t.text() == "Call" then
      TapObject.single_tap(t)
  end
end

これに対して未定義のメソッド「touchSingleTap」エラーが発生します

この問題に遭遇した人はいますか、または現在のページを終了せずにモバイルデバイスで選択したものをクリック/タップする方法を知っていますか?

ありがとう、

ジェフ

4

1 に答える 1

0

これに対する解決策は本当に簡単だったようです。ポップアップ リストから要素をクリックしようとする代わりに、代わりに送信キーを使用します。

el = @driver.find_element(:id, "activityType")
el.send_keys("Call")

ありがとう、

ジェフ

于 2013-01-28T18:36:56.610 に答える