Как я могу найти текст и заполнить / щелкнуть ссылку с помощью Selenium? - PullRequest
1 голос
/ 02 мая 2010

Вот сделка:

Есть ли способ найти вводимое имя или тип, который не является точным, и заполнить его?

Например, я хочу заполнить любой ввод адресом электронной почты с именем своей электронной почты, но, возможно, у меня есть некоторые входные данные с именем email-123, e-mail, email и т. Д. ... Есть ли способ сделать что-то вроде * email *?

А как я могу нажать на ссылку, чтобы проверить какой-либо текст, который может быть на ссылке, или над ссылкой, или закрыться, или в классе и т. Д.?

PS: я использую Селен Ide с Firefox

Ответы [ 2 ]

2 голосов
/ 02 мая 2010

Вы можете использовать Xpath, чтобы найти его с чем-то вроде //input[contains(@name,'email').Если у вас есть несколько подобных экземпляров на этой странице, стоит перенести тест на ваш любимый язык программирования и затем выполнить

emailInstances = sel.get_xpath_count("//input[contains(@name,'email')]")
for i in range(int(emailInstances)):
  sel.type("//input[contains(@name,'email')]["+ i + 1 +"]","email@address.tld")
0 голосов
/ 04 мая 2010

Xpath работает хорошо, а решение выше - хорошо. Если вы пытаетесь протестировать старые версии IE, вы также можете использовать JavaScript-инъекцию. Я считаю, что это очень быстро, хотя может быть немного сложнее отладить. На самом деле я не проверял, работает ли нижеприведенное, но, надеюсь, это даст вам представление о том, что вы можете сделать:

    String javaScript = "_sl_enterEmailStr = function(parentObj,str) {      "+
            "     var allTags = parentObj.getElementsByTagName('input');    "+
            "     for (var i = 0; i < allTags.length; ++i) {                "+
            "         var tag = allTags[i];                                 "+
            "         if (tag.name && tag.type && tag.type === 'text'       "+
            "             && tag.name.match(/email/)) {                     "+
            "             tag.value = str;                                  "+
            "         }                                                     "+
            "     }                                                         "+
            "};                                                             "+
            "_sl_enterEmailStr(this.browserbot.getCurrentWindow().document  "+
            "                   ,'myemail@mydomain.org');                   ";


     mySelenium.getEval(javaScript);

Я считаю, что JavaScript-инъекция с помощью регулярных выражений позволяет мне делать большие вещи с динамическими полями ввода. Обратите внимание, что вы можете использовать findElement (), чтобы более точно определить, где вы ищете теги.

Что касается щелчка по ссылке и получения текста, это простые операции click () и getText (), которые могут быть выполнены при наличии соответствующего локатора. Я хотел бы проверить селен API. например, вот ссылка на Java для 1.0b2 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...