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")

这也做出了选择,然后退出了页面

然后我想,我也许可以使用 Touch 操作我还是 Ruby 的新手,而且我很可能错误地阅读了 TouchScreen 的 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 回答