2015-06-26 1 views
0

У меня уже установлен мой аншлаг calabash, который работает отлично. Теперь мне нужно добавить сценарий, где в эмуляторе Android Мне нужно открыть браузер по умолчанию перейти к URL-адресу (i.e https://def/l/abc) Он откроет приложение, предполагая, что приложение уже установлено. Затем я могу войти в приложение и перейти дальше. Как я могу автоматизировать это через калабас. В частности, откройте браузер и нажмите ссылку. Предположим, что мой эмулятор уже открыт. я нашел что-то вродеcalabash-automate приложение, которое открывается, ударяя ссылку из браузера

require 'selenium-webdriver' 

caps = Selenium::WebDriver::Remote::Capabilities.android 
client = Selenium::WebDriver::Remote::Http::Default.new 
client.timeout = 480 
driver = Selenium::WebDriver.for(
:remote, 
:http_client => client, 
:desired_capabilities => caps, 
) 
driver.navigate.to "http://www.google.com" 
element = driver.find_element(:name, 'q') 
element.send_keys "Hello WebDriver! 

Однако это всегда дает ошибку как

ruby test.rb 
/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:878:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED) 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:878:in `open' 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:878:in `block in connect' 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/timeout.rb:66:in `timeout' 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:877:in `connect' 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:862:in `do_start' 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:851:in `start' 
    from /Users/asinha/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/2.0.0/net/http.rb:1367:in `request' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:107:in `response_for' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/default.rb:58:in `request' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/http/common.rb:59:in `call' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:657:in `raw_execute' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:122:in `create_session' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/remote/bridge.rb:87:in `initialize' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/common/driver.rb:52:in `new' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver/common/driver.rb:52:in `for' 
    from /Users/asinha/.rvm/gems/ruby-2.0.0-p598/gems/selenium-webdriver-2.46.2/lib/selenium/webdriver.rb:84:in `for' 
from test.rb:6:in `<main>' 

ответ

0

Я думаю, вы можете ввести в заблуждение то, что используется для кальян. Calabash используется для тестирования приложений для iOS и Android. Насколько мне известно, Calabash не поддерживает то, что вы пытаетесь сделать. Если я ошибаюсь, полагая, что Calabash не может открыть ваше приложение с помощью URL-адреса, вам все равно нужно будет добавить <uses-permission android:name="android.permission.INJECT_EVENTS"/> в файл манифеста Android, чтобы иметь возможность использовать «родные» функции вашего телефона, такие как нажатие кнопку «домой», нажав кнопку «Назад» и т. д. Затем вы столкнетесь с проблемой неспособности запустить веб-браузер. Calabash использует ваш файл apk для установки приложения на вашем телефоне для замены с помощью симулятора. Таким образом, Calabash в некоторой степени является «песочницей», поскольку он не знает, как общаться с прошивкой и оборудованием вашего устройства. Поэтому, насколько мне известно, то, что вы пытаетесь сделать, не входит в сферу достижения Калабаша. Надеюсь это поможет.

+0

Calabash не нужно открывать приложение через URL-адрес. В качестве примера мой calabash устанавливает файл apk в начале запуска набора тестов. После того, как установка будет выполнена, рубиновый + селеновый webdriver откроет браузер и перейдет к этому URL-адресу. Затем он откроет то же приложение, которое установлено calabash. Затем калабаш нажмет кнопку входа и т. Д. И продолжит движение. Я добавил код селена в начале моего вопроса. Однако это не сработает. – asinha

+0

Я думаю, вы должны дать Appium попробовать, который также использует WebDriver. Я считаю, что вы можете сделать то, что хотите, вместо этого, вместо Калабаша. –