2015-04-14 2 views
1

Тестирование сценарий,опции под ниспадающего меню не получает выбранный

  1. создания ячейки,
  2. Изменить язык из выпадающего меню (от R до Python)
  3. Введите код и выполните его. HTML код выпадающего меню является
<select class="form-control cell-control-select cell-control"> 
    <option>Markdown</option> 
    <option>R</option> 
    <option>Python</option> 
    <option>RMarkdown</option> 
</select> 

и ниже мой casperjs код

casper.then(function(){ 
    this.mouse.click({ type: 'xpath' , path: "/html/body/div[3]/div/div[2]/div/div[3]/div[1]/div/select"});//x path for dropdown menu 
    this.echo('clicking on dropdown menu'); 
    this.wait(3000); 
}); 

casper.then(function(){ 
    var z = this.evaluate(function() { 
    document.querySelector('.form-control').selectedIndex = 2; 
    return true; 
    }); 
    this.wait(3000); 
}); 

его выбора языка Python из выпадающего меню, но когда мы бежим код это показывая Ошибка в ячейке быстрого доступа. Такая же ошибка возникает при запуске R-кода в ячейке языка python.

+0

что ошибка, что вы видите? После того, как вы измените выбранный индекс, показывает ли он, что «Python» выбран при съемке экрана? Является ли окно выбора возможно скрытым, а фактическое раскрывающееся меню реализовано с помощью HTML + CSS + JS? –

+0

ya в раскрывающемся меню отображается «Python». Я использую только простой код python, который равен = 50; print a. когда он получает выполнение (Python выбран в раскрывающемся списке), он показывает «Ошибка анализа: : 1: 12: неожиданный символ 1: a = 50; напечатать ошибку». Эта ошибка возникает, когда мы запускаем код python в R. – GANA

ответ

1

Возможно, проблема заключается в том, что в поле выбора есть переключатель изменений, который не вызывается, поскольку установка свойства selectedIndex не вызывает изменения.

Надежный способ вызвать это изменение заключается в использовании jQuery's change():

this.evaluate(function() { 
    var form = document.querySelector('.form-control'); 
    form.selectedIndex = 2; 
    $(form).change(); 
}); 

Если вы уже не имеете JQuery на странице, вы можете вводить его как это, если у вас есть JQuery локально:

var casper = require('casper').create({ 
    clientScripts: [ "jquery.min.js" ] 
}); 

или если вы не имеете его на месте:

var casper = require('casper').create({ 
    remoteScripts: [ "http://code.jquery.com/jquery-2.1.3.min.js" ] 
}); 
+0

выше, когда решение работает ... спасибо., Но после этого, когда я выполняю код, приложение становится невосприимчивым ... и без его выполнения выходит из сценария. – GANA

+0

Спасибо, что выше решение работает только тогда, когда я набираю код, а я меняю выпадающее меню, но когда я изменяю значение выпадающего перед вводом кода, он начинает выполнять пустую ячейку. он не будет на следующей строке кода, который добавляет код в ячейку – GANA

+0

Что делает * "code" * in * "решение работает только тогда, когда я набираю код" * означает? Вы говорите о том, что нужно набирать на странице? Если да, то я не могу вам помочь, потому что я не знаю страницы, о которой вы говорите. –

Смежные вопросы