2014-01-23 2 views
7

У меня есть HTML элементы на моей странице, как это, который находится на защищенной странице отправлять форме Войтииспользуя casperjs щелкнуть HTML-элемент на основе его текста

<h4 class="something" id="somethingelse1" style="display: none;">Some Name</h4> 
<h4 class="something" id="somethingelse2" style="display: none;">Some other name</h4> 

Я хочу, чтобы иметь возможность имитировать щелчок этот элемент, который затем загрузит новую страницу. После загрузки этой новой страницы я хочу сделать снимок элемента div внутри него. У меня есть часть снимка, но я не могу найти способ щелкнуть элемент на основе его текста. Как, например, имитирующий щелчок элемента Н4 выше, где текст был «другое название»

Это то, что я до сих пор ...

var casper = require('casper').create({ 

    pageSettings: { 
     loadImages: true,   
     loadPlugins: true   
    } 
}); 

casper.start('http://localhost/', function() { 

    console.log("page loaded"); 

    this.fill('form#login-form', { 
     username: 'lbguy', 
     password: 'lbguypass' 
    }, true); 
}); 

casper.thenOpen('http://localhost/MysecureSite/page1', function() { 
     this.echo(this.getTitle()); 

    var query_xpath = '//*[@innerHtml="Some other name"]'; 

    require('utils').dump(this.getElementAttribute(query_xpath , 'id')); 

    //casper.start('http://localhost/MysecureSite/page2', function() { 
     // this.captureSelector('pic.png', '#someelement');  
    //}); 

}); 

После заголовка страницы консоли просто выводит " Ноль". Я не уверен, что это правильный подход. Цель состоит в том, чтобы имитировать щелчок элемента H4 на основе выделенного текста, который я буду отправлять программно, а затем сделать снимок на странице2 после того, как действие click загрузит страницу 2 из div, называемой someelement.

ОБНОВЛЕНИЕ

Элементы h4 динамически добавляются на страницу с помощью JQuery после загрузки страницы.

Благодаря

ответ

2

Попробуйте ждать вашего h4 было фактически добавлены к DOM, а затем нажмите на него:

casper.waitForSelector("#somethingelse1").thenClick("#somethingelse1"); 
0

Вы должны использовать XPath щелкнуть по тексту элемента, который вы пытаетесь нажать.

casper.click(x('//*[text()="Your Text"]')); 
+0

, что дает мне ошибку ... CasperError: Невозможно послать MouseDown события на несуществующем селекторе: xpath selector: // * [text() = "my text"] – user3228249

+0

Я не знаком с Каспером и только что начал с него сегодня. Является ли элемент H4 не интерактивным? – user3228249

+0

Дополнительная информация: Элементы h4 динамически добавляются на страницу по jquery после загрузки страницы. Может ли это быть в ловушке кода? – user3228249

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