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

Фотография

Парсер строк из таблицы


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

#1 patr14ek

patr14ek

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Lizz Stumph
  • Город:localhost


Отправлено 05 июля 2011 - 12:46

Добрый день. У меня следующая проблема: есть табличка с n записями. В конце каждой строчки имеется одна из двух кнопок (a и b),либо нет кнопки совсем. Мне нужно перебрать хотя бы 10 значений из таблицы и, если в строке есть кнопка a, совершить определенные действия.
Суть проблемы заключается в том,что есть написанный мною цикл, который, в принципе, перебирает строки таблицы, но он видит кнопку a все врмя в первой строке таблицы и совершает действия 10 раз только с ней.
Как лучше и правильнее будет сделать так,чтобы цикл проходил и выполнялось условие и действия кнопки а? Спасибо.
  • 0
ЕДРЕНАЯ КОНСОЛЬ ДЕЛАЕТ МЕНЯ СИЛЬНЕЙ!

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 05 июля 2011 - 12:52

Может, для начала приложить кусок html-кода страницы с таблицей и ваш цикл?
  • 0

#3 patr14ek

patr14ek

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Lizz Stumph
  • Город:localhost


Отправлено 05 июля 2011 - 13:02

Может, для начала приложить кусок html-кода страницы с таблицей и ваш цикл?


Свои кусок кода приложить могу:
		for ($j = 1; $j <= 10; $j++){
			$DEAL = $this->getText("//div[@id='gridData']/div['$j']/table/tbody/tr/td[17]");
			
			if($this->isTextPresent("DEAL") == true){
				
				$this->click("//div[@id='gridData']/div['$j']/table/tbody/tr/td[17]/div/div");
				$this->type("//input[@value='']", "1");
				$this->click("link=111");
				$this->click("//div[3]/div[4]/div[1]/b");	
			}
		}
Я даже догадываюсь,что неправильно делаю вот условие с isTextPresent.
А вот html-код таблички приложить проблематично, ибо там очень много всего и табличку вытащить не могу =//
  • 0
ЕДРЕНАЯ КОНСОЛЬ ДЕЛАЕТ МЕНЯ СИЛЬНЕЙ!

#4 owasp

owasp

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

  • Members
  • PipPip
  • 87 сообщений

Отправлено 05 июля 2011 - 13:30

Последние три действия используют XPath-выражение которое соотвествует фиксированному элементу (в понимании Selenium).

"//input[@value='']" - среди всех элементов с именем input, выбрать такие, у которых значение аттрибута value пустое (аттрибут есть, но значение пустое). Так как речь идёт о списке, то Selenium выберет только первый элемент списка.

"link=111" - (на сколько я помню) - найти первую ссылку, с текстом "111", например подойдет <a href="http://ya.ru"><p>111...><p>111</p></a>

"//div[3]/div[4]/div[1]/b" - среди всех элементов с именем div выбрать третий, среди дочерних элементов выбрать 4-й div, ... выбрать первый элемент с именем "b".
  • 0

#5 patr14ek

patr14ek

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

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Lizz Stumph
  • Город:localhost


Отправлено 05 июля 2011 - 17:41

Как я и думала, ошибка была в строчке
if($this->isTextPresent("DEAL") == true)
, задала условие по-другому, и все заработало. Всем спасибо.
  • 0
ЕДРЕНАЯ КОНСОЛЬ ДЕЛАЕТ МЕНЯ СИЛЬНЕЙ!


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

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