Задача состоит в том, что мне нужно найти и нажать по имени запомненного обьекта.
Мне нужно прогнать мою переменную по каждому элементу списка, если совпадений нет, тогда перейти на следующую страницу, и так далее, пока переменная не будет равна с элементом из списка. Если ровная, тогда кликнуть по ней.
Пример страницы:
Проблема заключается в том, что цикл проходит только один раз: прогоняет каждый элемент из списка, если этого элемента нет, переключается на вторую страницу и на этом все.Мне нужно, чтобы это повторялось до тех пор, пока элемент не будет найден.
Пример кода:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
class TestPriceUa(unittest.TestCase):
driver = None
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(60)
def test_filter(self):
#Зайти на yandex.ru
self.driver.get("http://yandex.ru")
#В разделе Маркет выбираю Сотовые телефоны
self.driver.find_element_by_id("tab-market").click()
self.driver.find_element_by_css_selector(r'.l-categories a[href="/catalog.xml?hid=91491"]').click()
#Захожу в росширенный поиск
self.driver.find_element_by_css_selector(r'.black').click()
#Задаю параметры поиска
self.driver.find_element_by_id("f2142558003-1").send_keys('20000')
self.driver.find_element_by_css_selector('#f2142557926 span').click()
self.driver.find_element_by_id("f2142557926-1").send_keys('3')
self.driver.find_element_by_css_selector('#f1801946-1871375').click()
self.driver.find_element_by_css_selector('#f1801946-1871447').click()
self.driver.find_element_by_css_selector('#f1801946-1871499').click()
self.driver.find_element_by_css_selector('#f1801946-1871151').click()
self.driver.find_element_by_css_selector('#f1801946-11756910').click()
self.driver.find_element_by_css_selector(r'.b-gurufilters_submit-button').click()
#Проверка, что на странице 10 элементов
self.assertEqual(len(self.driver.find_elements_by_class_name('b-offers__info')), 10)
#Запоминаю первый телефон в списке
first = self.driver.find_element_by_css_selector('.results>tbody>tr>td>form>div>:first-child>div.b-offers__desc>h3>a').get_attribute('id')
print(first)
#Изменяю сортировку на другую(популярность или новизна)
self.driver.find_element_by_xpath("html/body/div[3]/table/tbody/tr[2]/td[2]/div/ul[2]/li[4]/a").click()
#Список телефонов уже с новой сортировкой
items = self.driver.find_elements_by_xpath("//div[@class='b-offers b-offers_type_guru'] /div[@class='b-offers__desc'] /h3 /a")
#Поиск ранее запомненного телефона
for list in items:
if list.get_attribute('id')!=first:
continue
list.click()
break
else:
self.driver.find_element_by_css_selector('.b-pager__next').click()
#def tearDown(self):
#self.driver.close()
if __name__ == "__main__" :
unittest.main()
Цикл с которым не могу разобраться:
first = self.driver.find_element_by_css_selector('.results>tbody>tr>td>form>div>:first-child>div.b-offers__desc>h3>a').get_attribute('id')
print(first)
#Изменяю сортировку на другую(популярность или новизна)
self.driver.find_element_by_xpath("html/body/div[3]/table/tbody/tr[2]/td[2]/div/ul[2]/li[4]/a").click()
#Список телефонов уже с новой сортировкой
items = self.driver.find_elements_by_xpath("//div[@class='b-offers b-offers_type_guru'] /div[@class='b-offers__desc'] /h3 /a")
#Поиск ранее запомненного телефона
for list in items:
if list.get_attribute('id')!=first:
continue
list.click()
break
else:
self.driver.find_element_by_css_selector('.b-pager__next').click()
Не могу разобраться с циклом, хочу чтобы он проходил до тех пор пока не будет найдено этот элемент