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

Фотография

Поиском элемента. Нужна помощь!


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

#1 egorza

egorza

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

  • Members
  • Pip
  • 26 сообщений
  • ФИО:Замараев Егор


Отправлено 22 февраля 2012 - 05:52

Добрый день.
Возникла следующая проблема:
Есть некая структура:
<div class="SitleBlock">
  <span class="STitle" title=""> название1</span>
  <div class="StonsBlock">
    <a class="Sc" href="/Scgle/257">
    <a class="Sc remove indentleft" href="/Ste" id="257">
  </div>
</div>
<div class="SitleBlock">
  <span class="STitle" title=""> название2</span>
  <div class="StonsBlock">
    <a class="Sc" href="/Scgle/259">
    <a class="Sc remove indentleft" href="/Ste" id="259">
  </div>
</div>
Тут приведено 2 блока. Необходимо попасть в блок по его названию и нажать кнопку <a class="Sc remove indentleft" href="/Ste" id="ххх"> (удаление)..
Я наверное плохо умею пользоваться локаторами, но у меня идей нет=)
Сделал цикл, который сравнивет названия элементов, но как потом именно в этом блоке тыкнуть по удалению я так и не понял.
singles= driver.findElements(By.xpath("//div[@class='SitleBlock']//span"));
     for (WebElement we : singles)
	{
		if (we.getText().equalsIgnoreCase(sTestName)) 
		{	
			itemFound = true;
			break; 
		}
				
				
	}
Буду рад услышать правильные решения. Заранее благодарен
  • 0

#2 egorza

egorza

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

  • Members
  • Pip
  • 26 сообщений
  • ФИО:Замараев Егор


Отправлено 22 февраля 2012 - 06:00

Вроде проблема разрешилась=) неуверен, что так делать корректно, но зато работает.
Запомнить номер элемента массива, на котором название совпало с эталонным=) и потом найти по этому номеру блок с удалением.
Если есть какие-то еще идеи, пожалуйста, расскажите.
  • 0

#3 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 22 февраля 2012 - 08:16

ничего не могу понять :sad:
если вам нужно кликнуть на "a", то зачем вы ищете div/span?
можно попробовать что-то типа
//span[@title='название 1']/descendant::a[@class='Sc remove indentleft']
этот локатор находит спан с названием 'название 1' и ищет там ссылку с классом 'Sc remove indentleft'

З.Ы. а чем плох локатор //span[@title='название 1']/div/a[2]? Хотя 1й и лучше
  • 0

#4 egorza

egorza

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

  • Members
  • Pip
  • 26 сообщений
  • ФИО:Замараев Егор


Отправлено 22 февраля 2012 - 09:59

ничего не могу понять :sad:
если вам нужно кликнуть на "a", то зачем вы ищете div/span?
можно попробовать что-то типа

//span[@title='название 1']/descendant::a[@class='Sc remove indentleft']
этот локатор находит спан с названием 'название 1' и ищет там ссылку с классом 'Sc remove indentleft'

З.Ы. а чем плох локатор //span[@title='название 1']/div/a[2]? Хотя 1й и лучше


кликнуть надо на а, но сначала надо понять на какую именно.. их там очень много. Нужно кликнуть на ту а[2], которая лежит в блоке div рядом со спаном, название в котором совпадает с тем, которое я ищу. в поле Title нет значений вообще, оно в тексте, поэтому я и смотрю we.getText()
  • 0

#5 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 22 февраля 2012 - 10:42

да, что-то я не обратил внимания. А конструкция такого рода работает?
//span[@class='STitle' and contains(text(),'название 1')]/descendant::a[@class='Sc remove indentleft']
Поэксперементируйте с contains, вероятнее всего это вам и нужно
  • 1

#6 egorza

egorza

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

  • Members
  • Pip
  • 26 сообщений
  • ФИО:Замараев Егор


Отправлено 22 февраля 2012 - 11:11

Виктор, спасибо вам.
Контейнс заменил на сравнение для правильности..
Заработал такой вариант:
//div[@class='SchoolRingsTitleBlock']//span[text()= Название 1]/following-sibling::div//a[2]
Я явно xpath недооценивал=)
Спасибо еще раз, теперь переписывать безумные циклы придется=)
  • 0

#7 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 22 февраля 2012 - 12:10

пожалуйста, сам сталкивался с проблемой поиска локатора и знаю, что иногда из-за этого приходится писать кучу ненужного кода. Жаль никто другой не отписался в этой теме. Тут есть люди, которые намного лучше меня разбираются в локаторах
  • 0


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

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