Вот соглашение:
Существует ли способ искать входное имя, или ведьма типа не точна, и заполните его?
Например, я хочу заполнить любой вход электронной почтой имени с моей электронной почтой, но у меня, возможно, есть некоторые исходные данные, названные электронной почтой 123, emailemail, электронные письма и т.д... Существует ли способ сделать что-то как * электронная почта *?
И как я могу нажать на ссылку, проверяющую некоторый текст, который мог быть на ссылке, или выше ссылки, или близко, или в классе и т.д.?
PS: я использую язя селена с Firefox
Вы можете использовать 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")
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 .