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

Фотография

Selenium WD: class = list


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

#1 katerina86

katerina86

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

  • Members
  • Pip
  • 32 сообщений
  • ФИО:Катерина Перцева

Отправлено 15 ноября 2012 - 11:10

Есть такая структура:

<ul id="myId" class="list">
<li>Маша</li>
<li>Катя</li>
<li>Лена</li>
...

При этом список может изменяться - добавляться новые элементы, либо удаляться уже существующие.

Как проверять, что элемент списка есть в списке или его нет сейчас там? Как путь прописывать?

Спасибо

(python+Selenium WD)
  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 15 ноября 2012 - 12:19

Вроде так (c#)

driver.FindElement(By.XPath("//ul[@id='myId']/li[contains(text(), 'Имя')]"));

А элементы списка могут повторяться?
  • 1

#3 katerina86

katerina86

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

  • Members
  • Pip
  • 32 сообщений
  • ФИО:Катерина Перцева

Отправлено 15 ноября 2012 - 12:34

Вроде так (c#)

driver.FindElement(By.XPath("//ul[@id='myId']/li[contains(text(), 'Имя')]"));

А элементы списка могут повторяться?


Спасибо большое.

Нет , не могут
  • 0

#4 katerina86

katerina86

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

  • Members
  • Pip
  • 32 сообщений
  • ФИО:Катерина Перцева

Отправлено 15 ноября 2012 - 13:24

а как посчитать кол-во элементов в списке?
  • 0

#5 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 15 ноября 2012 - 14:30

а как посчитать кол-во элементов в списке?

Все очень просто (c#):

driver.FindElements(By.XPath(//ul[@id='myId']/li")).Count


  • 0

#6 АлександрАкуленко

АлександрАкуленко

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Акуленко Александр

Отправлено 15 ноября 2012 - 19:57

а как посчитать кол-во элементов в списке?

# (python+Selenium WD)

myId_list = driver.find_elements_by_xpath("//ul[@id='myId']/li")
myId_count = len(myId_list) # Количество элементов в списке
  • 1

#7 katerina86

katerina86

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

  • Members
  • Pip
  • 32 сообщений
  • ФИО:Катерина Перцева

Отправлено 27 ноября 2012 - 11:36

Подскажите, как получить value_of_css_property каждого элемента списка после вызова find_elements_by_xpath (либо зная кол-во таких элементов)

Например:

<ul id="myId" class="list">
<li class="girl_name" my_name = "Masha" >Маша</li>
<li class="girl_name" my_name = "Katya">Катя</li>
<li class="girl_name" my_name = "Lena">Лена</li>
...

Я начала писать что-то вроде этого, но запнулась и не уверена, что подход верен вообще :

lst_num = len(driver.find_elements_by_xpath("//ul[@id='myId']/li"))
for x in range(lst_num):
    lst.append(driver.find_element_by_xpath("//ul[@id='myId']/li[@class='girl_name']").value_of_css_property('my_name'))

То есть в итоге на выходе мне нужно получить список my_name'ов
  • 0

#8 katerina86

katerina86

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

  • Members
  • Pip
  • 32 сообщений
  • ФИО:Катерина Перцева

Отправлено 27 ноября 2012 - 13:16

Переделала так инстукцию в цикле:
lst.append(driver.find_element_by_xpath("//ul[@id='myId']/li["+str(x+1)+"]").value_of_css_property('my_name'))

так вроде должно работать :)
  • 0

#9 _Yura

_Yura

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

  • Members
  • Pip
  • 50 сообщений
  • ФИО:n/a

Отправлено 27 ноября 2012 - 14:23

+str(x+1)

а зачем +1? На последнем элементе выйдет за границу.
  • 0

#10 sawoy

sawoy

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

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 28 ноября 2012 - 08:00

Привет.


1. my_name - не css свойство, а аттрибут.
2. код:
st_num = len(driver.find_elements_by_xpath("//ul[@id='myId']/li"))
for x in range(lst_num):
    lst.append(driver.find_element_by_xpath("//ul[@id='myId']/li[@class='girl_name']").value_of_css_property('my_name'))

я бы преобразовал с учетом 1 пункта в:
elements = driver.find_elements_by_xpath("//ul[@id='myId']/li[@class='girl_name']")
my_names = [element.get_attribute("my_name") for element in elements]

  • 0


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

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