2016-05-16 9 views
0

В настоящее время я использую Webdriver IO, Chimp JS и Cucumber JS, и мне немного сложно перетащить элемент в другой элемент, который находится внутри iframe. Мне удалось найти элемент, который я хочу переместить, а также элемент в iframe после использования client.frame(0);, однако я не нашел способ щелкнуть по элементу, переключиться на iframe, чтобы найти элемент, который я хочу переместите элемент, а затем переместите элемент.Пытается перетащить элемент в элемент, который находится внутри iFrame (с помощью Webdriver-io)?

Чтобы было проще, вот изображение. Я хочу, чтобы переместить элемент 1 к элементу 2. Но элемент 2 находится в IFRAME:

enter image description here

Looking through the docs, я вижу много потенциально полезных действий, таких как удержание, релиз доб. Но я работаю на рабочем столе, поэтому я не могу использовать какие-либо мобильные действия.

С этим ограничением, похоже, что единственная функция перетаскивания, доступная мне, - dragAndDrop, но, похоже, нет способа перетащить объект в элемент iframe в javascript-версии WebDriver. Правильно ли я об этом думаю? Есть ли способ сделать это исключительно с помощью Cucumber JS? Я чувствую, что мне не хватает чего-то огромного здесь, но я не могу понять это: \

+0

Это не ответ, больше похоже на предложение! Вы пытались использовать [buttonDown] (http://webdriver.io/api/protocol/buttonDown.html) и [buttonUp] (http://webdriver.io/api/protocol/buttonUp.html) Кроме того, вам нужно обратиться к каналу gttitter WebdriverIO. –

+0

Я как раз собирался ответить на этот вопрос, это именно то, что я должен был сделать, чтобы это работало. Спасибо за ваше предложение! – Nagoshi

ответ

1

Самостоятельный драйвер selenium, который я использовал, - selenium-server-standalone-2.50.0.jar (selenium-release. storage.googleapis.com/index.html?path=2.50/) и хром водитель я использовал ChromeDriver 2,29 (https://sites.google.com/a/chromium.org/chromedriver/downloads)

var webdriverio = require('webdriverio'), 
     dragAndDrop = require('html-dnd').codeForSelectors, 
     should = require('should'); 


    // a test script block or suite 
    describe('Title Test for Web Driver IO - Tutorial Test Page Website', function() { 

     // set timeout to 10 seconds 
     this.timeout(10000); 
     var driver = {}; 

     // hook to run before tests 
     before(function() { 
     // load the driver for browser 
     driver = webdriverio.remote({ desiredCapabilities: {browserName: 'chrome'} }); 
     return driver.init(); 
     }); 

     // a test spec - "specification" 
     it('should be load correct page and title', function() { 
     var sectionId = ""; 
     // load page, then call function() 
     return driver  
      .url('http://localhost:9000') //your url 
      .pause(7000) 
      .moveToObject('#element1') 
      .buttonDown()  
      .moveToObject('#element2') 
      .buttonUp() 
      .pause(2000)  
     .end() 
     }); 

     // a "hook" to run after all tests in this block 
     after(function() { 
     return driver.end(); 
     }); 
    });