Помогите выбрать елемент
#1
Отправлено 12 мая 2011 - 13:34
Подскажите, пожалуйста, как мне выбрать нужный радиобатон, его параметры ниже. По name не могу обратится, потому что значение меняется каждый раз и я не могу знать какое значений будет следующим.
<input type="radio" ondblclick="change(this);" value="102121" name="newArticleIds[13]">
Как мне написать цикл или что-то в этом роде, чтоб кликнуть следующий радиобатон, после этого newArticleIds[13]?
#2
Отправлено 12 мая 2011 - 14:17
#3
Отправлено 12 мая 2011 - 14:30
#4
Отправлено 12 мая 2011 - 14:38
#5
Отправлено 12 мая 2011 - 14:44
Прикрепленные файлы
#6
Отправлено 12 мая 2011 - 14:56
#7
Отправлено 12 мая 2011 - 14:58
#8
Отправлено 12 мая 2011 - 15:03
Конструируйте XPath в котором сначала выбираете нужную ячейку, а потом вложенный инпут - который и будет радиобаттоном, если нет скрытых инпутов.
Даный вариант не подходит, потому как на странице каждий раз возникает другое количество и разположение елементов. Как для одного случае так может и пройдёт, но второй раз тест уже не сработает...
#9
Отправлено 12 мая 2011 - 15:10
я бы сначала выбрал все элементы, для которых name содержит часть "newArticleIds", и потом бы выбирал из них по индексу. либо делал бы в цикле проверку по какому-либо свойству для поиска нужного элемента списка.
По поводу цикла поподробнее пожалуйста... я что-то вроде цикла написала, но он мне выбирает все остальные елементы, а мне нужно только один (следующий после этого), мои java познания очень маленькие
#10
Отправлено 12 мая 2011 - 15:13
а еще лучше было бы вглянуть на различные варианты html для радио-боксов.
и покажите ваш java код, расширим ваши java познания. :)
#11
Отправлено 12 мая 2011 - 16:09
#12
Отправлено 12 мая 2011 - 16:22
Почему не подойдет? Если я правильно понял, то у вас есть какой-то текстовый елемент и рядом с ним радиобатон. И вам надо выбрать радио возле определенного текста. Этот текст и радио, скорее всего, завернуты в какой то тег?!Т.е что то вроде такого, должно работать - //тег_с_текстом[text()='нужный текст']/../input[@type='radio']Даный вариант не подходит, потому как на странице каждий раз возникает другое количество и разположение елементов. Как для одного случае так может и пройдёт, но второй раз тест уже не сработает...
Покажите фрагмент ХТМЛ с текстовым элементом и радиобаттом. Если нужно следующий после опреджеленного, то код обоих
#13
Отправлено 13 мая 2011 - 07:06
а как идентифицируете элемент, к которому хотите привязаться? есть ли у него какой-то уникальный параметр?
а еще лучше было бы вглянуть на различные варианты html для радио-боксов.
и покажите ваш java код, расширим ваши java познания. :)
if (selenium.isElementPresent("name=newArticleIds[8]")) {
selenium.check("name=newArticleIds[8]");
}
else {
for (i=1; i<50; i++){
if (selenium.isElementPresent("name=newArticleIds["+ i +"]")) {
selenium.check("name=newArticleIds["+ i +"]");
}
else {
i++;
}
}
}
Выбираю сначала если есть тот елемент что мне надо, сликаю его, если его нету идем дальше по перебору елементов, но так мне кликает несколько елементов пока доходит до 50.
В прикрепленном скриншоте виделены только те места, которые меняются в разных елементах, а так все остается прежним...
Прикрепленные файлы
#14
Отправлено 13 мая 2011 - 07:26
А почему нельзя обращаться к нужному елементу через ArticleToolTip? На вашем скрине это тег span
а как идентифицируете элемент, к которому хотите привязаться? есть ли у него какой-то уникальный параметр?
а еще лучше было бы вглянуть на различные варианты html для радио-боксов.
и покажите ваш java код, расширим ваши java познания. :)
if (selenium.isElementPresent("name=newArticleIds[8]")) {
selenium.check("name=newArticleIds[8]");
}
else {
for (i=1; i<50; i++){
if (selenium.isElementPresent("name=newArticleIds["+ i +"]")) {
selenium.check("name=newArticleIds["+ i +"]");
}
else {
i++;
}
}
}
Выбираю сначала если есть тот елемент что мне надо, сликаю его, если его нету идем дальше по перебору елементов, но так мне кликает несколько елементов пока доходит до 50.
В прикрепленном скриншоте виделены только те места, которые меняются в разных елементах, а так все остается прежним...
По какому признаку вам надо выбирать элемент? По тексту рядом?!
#15
Отправлено 13 мая 2011 - 07:46
А почему нельзя обращаться к нужному елементу через ArticleToolTip? На вашем скрине это тег span
а как идентифицируете элемент, к которому хотите привязаться? есть ли у него какой-то уникальный параметр?
а еще лучше было бы вглянуть на различные варианты html для радио-боксов.
и покажите ваш java код, расширим ваши java познания. :)
if (selenium.isElementPresent("name=newArticleIds[8]")) {
selenium.check("name=newArticleIds[8]");
}
else {
for (i=1; i<50; i++){
if (selenium.isElementPresent("name=newArticleIds["+ i +"]")) {
selenium.check("name=newArticleIds["+ i +"]");
}
else {
i++;
}
}
}
Выбираю сначала если есть тот елемент что мне надо, сликаю его, если его нету идем дальше по перебору елементов, но так мне кликает несколько елементов пока доходит до 50.
В прикрепленном скриншоте виделены только те места, которые меняются в разных елементах, а так все остается прежним...
По какому признаку вам надо выбирать элемент? По тексту рядом?!
ArticleToolTip-открывает hint с дополнительной информацией и до радиобаттона никакого отношения не имеет... Елемент нужно вибрать чтобы не зависел от текста и цифр внутри ArticleToolTip. Смисл пробежатся до следующего радио и кликнуть его. В общем смысл такой - если есть тот елемент что мне надо, то кликаем, если нет, выбираем следующий любой радио.
#16
Отправлено 13 мая 2011 - 07:54
selenium.check("name=newArticleIds[8]");
}
else {
for (i=1; i<50; i++){
if (selenium.isElementPresent("name=newArticleIds["+ i +"]")) {
selenium.check("name=newArticleIds["+ i +"]");
break;
}
else {
i++;
}
}
}
или так, чтоб без циклов
if (selenium.isElementPresent("name=newArticleIds[8]")) {
selenium.check("name=newArticleIds[8]");
}else{
selenium.check("//input[contains(name(),'newArticleIds')]");
}
#17
Отправлено 13 мая 2011 - 08:12
if (selenium.isElementPresent("name=newArticleIds[8]")) {
selenium.check("name=newArticleIds[8]");
}
else {
for (i=1; i<50; i++){
if (selenium.isElementPresent("name=newArticleIds["+ i +"]")) {
selenium.check("name=newArticleIds["+ i +"]");
break;
}
else {
i++;
}
}
}
или так, чтоб без циклов
if (selenium.isElementPresent("name=newArticleIds[8]")) {
selenium.check("name=newArticleIds[8]");
}else{
selenium.check("//input[contains(name(),'newArticleIds')]");
}
Да, всё оказалось очень просто...мне не хватило только break; Спасибо!
А второй вариант не работает... Нужно так написать - selenium.check("//input[contains(@name,'newArticleIds')]");и заработало!!!!!
#18
Отправлено 13 мая 2011 - 08:49
#19
Отправлено 13 мая 2011 - 09:23
Всё равно есть ощущение, что вы делаете что-то явно не то... не ясно, что вы на самом деле хотите. Вам надо отметить самую первую radio-кнопку и не важно, что она означает?
Надо было читать то что выше написано:
В общем смысл такой - если есть тот елемент что мне надо, то кликаем, если нет, выбираем следующий любой радио.
Там привязка до процесса что идет дальше а не до елемента который выбирается.
#20
Отправлено 13 мая 2011 - 10:20
Я тоже нифига не понял что за хитрый процесс. Цикл выглядит безумноНадо было читать то что выше написано:
В общем смысл такой - если есть тот елемент что мне надо, то кликаем, если нет, выбираем следующий любой радио.
Там привязка до процесса что идет дальше а не до елемента который выбирается.
made by Йода
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных