Selenium WD: class = list
#1
Отправлено 15 ноября 2012 - 11:10
<ul id="myId" class="list">
<li>Маша</li>
<li>Катя</li>
<li>Лена</li>
...
При этом список может изменяться - добавляться новые элементы, либо удаляться уже существующие.
Как проверять, что элемент списка есть в списке или его нет сейчас там? Как путь прописывать?
Спасибо
(python+Selenium WD)
#2
Отправлено 15 ноября 2012 - 12:19
А элементы списка могут повторяться?driver.FindElement(By.XPath("//ul[@id='myId']/li[contains(text(), 'Имя')]"));
#3
Отправлено 15 ноября 2012 - 12:34
Вроде так (c#)
А элементы списка могут повторяться?driver.FindElement(By.XPath("//ul[@id='myId']/li[contains(text(), 'Имя')]"));
Спасибо большое.
Нет , не могут
#4
Отправлено 15 ноября 2012 - 13:24
#5
Отправлено 15 ноября 2012 - 14:30
Все очень просто (c#):а как посчитать кол-во элементов в списке?
driver.FindElements(By.XPath(//ul[@id='myId']/li")).Count
#6
Отправлено 15 ноября 2012 - 19:57
# (python+Selenium WD)а как посчитать кол-во элементов в списке?
myId_list = driver.find_elements_by_xpath("//ul[@id='myId']/li")
myId_count = len(myId_list) # Количество элементов в списке
#7
Отправлено 27 ноября 2012 - 11:36
Например:
<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'ов
#8
Отправлено 27 ноября 2012 - 13:16
lst.append(driver.find_element_by_xpath("//ul[@id='myId']/li["+str(x+1)+"]").value_of_css_property('my_name'))
так вроде должно работать :)
#9
Отправлено 27 ноября 2012 - 14:23
а зачем +1? На последнем элементе выйдет за границу.+str(x+1)
#10
Отправлено 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 анонимных