Перейти к содержимому

Фотография

Помогите выбрать елемент


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 28

#1 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 12 мая 2011 - 13:34

Здраствуйте!
Подскажите, пожалуйста, как мне выбрать нужный радиобатон, его параметры ниже. По name не могу обратится, потому что значение меняется каждый раз и я не могу знать какое значений будет следующим.
<input type="radio" ondblclick="change(this);" value="102121" name="newArticleIds[13]">

Как мне написать цикл или что-то в этом роде, чтоб кликнуть следующий радиобатон, после этого newArticleIds[13]?
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 12 мая 2011 - 14:17

Например, по value - самый частый и простой случай. Или value вам тоже заранее не известен? А по name к радио-кнопкам вообще нет смысла обращаться, он у всей группы одинаковый.
  • 0

#3 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 12 мая 2011 - 14:30

value тоже постоянно меняется... Name то одинаковый, но "newArticleIds[13]" цифры в середине тоже меняются...
  • 0

#4 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 12 мая 2011 - 14:38

Что-то не совсем ясно, а как визуально пользователь может на странице определить по какому элементу ему кликнуть следует?
  • 0

#5 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 12 мая 2011 - 14:44

Там идет перечень текстових елементов и напротив радиобаттоны...

Прикрепленные файлы

  • Прикрепленный файл  Articles.jpg   27,92К   37 Количество загрузок:

  • 0

#6 vaha

vaha

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Илья

Отправлено 12 мая 2011 - 14:56

Конструируйте XPath в котором сначала выбираете нужную ячейку, а потом вложенный инпут - который и будет радиобаттоном, если нет скрытых инпутов.
  • 0

#7 Leoxa

Leoxa

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 12 мая 2011 - 14:58

я бы сначала выбрал все элементы, для которых name содержит часть "newArticleIds", и потом бы выбирал из них по индексу. либо делал бы в цикле проверку по какому-либо свойству для поиска нужного элемента списка.
  • 0

#8 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 12 мая 2011 - 15:03

Конструируйте XPath в котором сначала выбираете нужную ячейку, а потом вложенный инпут - который и будет радиобаттоном, если нет скрытых инпутов.


Даный вариант не подходит, потому как на странице каждий раз возникает другое количество и разположение елементов. Как для одного случае так может и пройдёт, но второй раз тест уже не сработает...
  • 0

#9 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 12 мая 2011 - 15:10

я бы сначала выбрал все элементы, для которых name содержит часть "newArticleIds", и потом бы выбирал из них по индексу. либо делал бы в цикле проверку по какому-либо свойству для поиска нужного элемента списка.


По поводу цикла поподробнее пожалуйста... я что-то вроде цикла написала, но он мне выбирает все остальные елементы, а мне нужно только один (следующий после этого), мои java познания очень маленькие :cray:
  • 0

#10 Leoxa

Leoxa

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 12 мая 2011 - 15:13

а как идентифицируете элемент, к которому хотите привязаться? есть ли у него какой-то уникальный параметр?
а еще лучше было бы вглянуть на различные варианты html для радио-боксов.

и покажите ваш java код, расширим ваши java познания. :)
  • 0

#11 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 12 мая 2011 - 16:09

А какой селениум используете? RC? Driver?
  • 0

#12 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 12 мая 2011 - 16:22

Даный вариант не подходит, потому как на странице каждий раз возникает другое количество и разположение елементов. Как для одного случае так может и пройдёт, но второй раз тест уже не сработает...

Почему не подойдет? Если я правильно понял, то у вас есть какой-то текстовый елемент и рядом с ним радиобатон. И вам надо выбрать радио возле определенного текста. Этот текст и радио, скорее всего, завернуты в какой то тег?!Т.е что то вроде такого, должно работать - //тег_с_текстом[text()='нужный текст']/../input[@type='radio']
Покажите фрагмент ХТМЛ с текстовым элементом и радиобаттом. Если нужно следующий после опреджеленного, то код обоих
  • 0

#13 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 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.

В прикрепленном скриншоте виделены только те места, которые меняются в разных елементах, а так все остается прежним...

Прикрепленные файлы

  • Прикрепленный файл  Kod.jpg   51,26К   30 Количество загрузок:

  • 0

#14 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 13 мая 2011 - 07:26


а как идентифицируете элемент, к которому хотите привязаться? есть ли у него какой-то уникальный параметр?
а еще лучше было бы вглянуть на различные варианты 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? На вашем скрине это тег span
По какому признаку вам надо выбирать элемент? По тексту рядом?!
  • 0

#15 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 13 мая 2011 - 07:46



а как идентифицируете элемент, к которому хотите привязаться? есть ли у него какой-то уникальный параметр?
а еще лучше было бы вглянуть на различные варианты 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? На вашем скрине это тег span
По какому признаку вам надо выбирать элемент? По тексту рядом?!


ArticleToolTip-открывает hint с дополнительной информацией и до радиобаттона никакого отношения не имеет... Елемент нужно вибрать чтобы не зависел от текста и цифр внутри ArticleToolTip. Смисл пробежатся до следующего радио и кликнуть его. В общем смысл такой - если есть тот елемент что мне надо, то кликаем, если нет, выбираем следующий любой радио.
  • 0

#16 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 13 мая 2011 - 07:54

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')]");
}
  • 0

#17 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 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; :rofl: Спасибо! :good:
А второй вариант не работает... Нужно так написать - selenium.check("//input[contains(@name,'newArticleIds')]");и заработало!!!!!
  • 0

#18 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 13 мая 2011 - 08:49

Всё равно есть ощущение, что вы делаете что-то явно не то... не ясно, что вы на самом деле хотите. Вам надо отметить самую первую radio-кнопку и не важно, что она означает?
  • 0

#19 kylie

kylie

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 13 мая 2011 - 09:23

Всё равно есть ощущение, что вы делаете что-то явно не то... не ясно, что вы на самом деле хотите. Вам надо отметить самую первую radio-кнопку и не важно, что она означает?


Надо было читать то что выше написано:
В общем смысл такой - если есть тот елемент что мне надо, то кликаем, если нет, выбираем следующий любой радио.

Там привязка до процесса что идет дальше а не до елемента который выбирается.
  • 0

#20 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 13 мая 2011 - 10:20

Надо было читать то что выше написано:
В общем смысл такой - если есть тот елемент что мне надо, то кликаем, если нет, выбираем следующий любой радио.

Там привязка до процесса что идет дальше а не до елемента который выбирается.

Я тоже нифига не понял что за хитрый процесс. Цикл выглядит безумно
made by Йода
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных