Android:从选项列表中选择项目时,单击退出屏幕

时间:2013-01-19 02:13:26

标签: android ruby selenium-webdriver

我正在查看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'错误

是否有人遇到此问题,或者知道如何在不退出当前页面的情况下点击/点按移动设备上的选项?

谢谢,

杰夫

1 个答案:

答案 0 :(得分:0)

看起来解决方案非常简单。 不要试图从弹出列表中单击元素,而只需使用发送键。

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

谢谢,

杰夫