Перебор тегов в Selenium ⇐ Python
-
Anonymous
Перебор тегов в Selenium
Я застрял, и мне не помешало бы подтолкнуть. Я впервые работаю с Selenium/Python, и мне трудно осознать конкретную проблему.
Суть вопроса вот в чем. У меня есть неизвестное количество классов диапазона, которые я хочу пройти. XPATH выглядят следующим образом:
/html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[1]/div/div[2]/div[3 ]/промежуток[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[2]/div/div[2]/div[3]/span[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[3]/div/div[2]/div[3]/span[2] Итак, я знаю, что мне нужно делать. Мне нужно пройтись по каждому li и получить span[2].text . Кажется, у меня ничего не получается.
Хорошо, я вроде как соврал. Я справился, чтобы это заработало, но это хакерская работа. Я бы предпочел сделать это правильно, чтобы начать понимать, как устранять подобные неполадки в будущем.
В каждом из приведенных выше li... есть еще один класс span.
/html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[1]/div/div[2]/div[4 ]/промежуток[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[2]/div/div[2]/div[4]/span[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[3]/div/div[2]/div[4]/span[2] Этот класс диапазона называется «время». Итак, я сохранил основной раздел в переменную:
items = driver.find_element(By.XPATH,"/html/body/main/section/section/div[2]/div/div/section[1]/div/ul") Затем я искал элементы в этом разделе по имени класса:
all_times = items.find_elements(By.CLASS_NAME,"время") Затем просмотрел каждый из них и сохранил текст в массив.
для раз в all_times: текст = раз.текст timeRemaining.append(текст) Итак... Используя длину массива, я знаю, сколько значений ожидать. Я могу успешно пройти через xpath.
xpath1 = "/html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[" xpath2 = "]/div/div[2]/div[3]/span[2]" для меня строка в перечислении (timeRemaining): я += 1 xpath = xpath1 + str(i) + xpath2 bin = driver.find_element(By.XPATH,xpath) печать (bin.text) Опять же, я бы предпочел пройтись по этому полю, как я делал в то время (я пытался использовать имя класса, но оно не вернуло никаких результатов)... но я застрял. Типа... застрял. Не ищу ответа, просто подталкиваю в правильном направлении. Любая помощь будет принята с благодарностью.
Я застрял, и мне не помешало бы подтолкнуть. Я впервые работаю с Selenium/Python, и мне трудно осознать конкретную проблему.
Суть вопроса вот в чем. У меня есть неизвестное количество классов диапазона, которые я хочу пройти. XPATH выглядят следующим образом:
/html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[1]/div/div[2]/div[3 ]/промежуток[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[2]/div/div[2]/div[3]/span[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[3]/div/div[2]/div[3]/span[2] Итак, я знаю, что мне нужно делать. Мне нужно пройтись по каждому li и получить span[2].text . Кажется, у меня ничего не получается.
Хорошо, я вроде как соврал. Я справился, чтобы это заработало, но это хакерская работа. Я бы предпочел сделать это правильно, чтобы начать понимать, как устранять подобные неполадки в будущем.
В каждом из приведенных выше li... есть еще один класс span.
/html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[1]/div/div[2]/div[4 ]/промежуток[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[2]/div/div[2]/div[4]/span[2] /html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[3]/div/div[2]/div[4]/span[2] Этот класс диапазона называется «время». Итак, я сохранил основной раздел в переменную:
items = driver.find_element(By.XPATH,"/html/body/main/section/section/div[2]/div/div/section[1]/div/ul") Затем я искал элементы в этом разделе по имени класса:
all_times = items.find_elements(By.CLASS_NAME,"время") Затем просмотрел каждый из них и сохранил текст в массив.
для раз в all_times: текст = раз.текст timeRemaining.append(текст) Итак... Используя длину массива, я знаю, сколько значений ожидать. Я могу успешно пройти через xpath.
xpath1 = "/html/body/main/section/section/div[2]/div/div/section[1]/div/ul/li[" xpath2 = "]/div/div[2]/div[3]/span[2]" для меня строка в перечислении (timeRemaining): я += 1 xpath = xpath1 + str(i) + xpath2 bin = driver.find_element(By.XPATH,xpath) печать (bin.text) Опять же, я бы предпочел пройтись по этому полю, как я делал в то время (я пытался использовать имя класса, но оно не вернуло никаких результатов)... но я застрял. Типа... застрял. Не ищу ответа, просто подталкиваю в правильном направлении. Любая помощь будет принята с благодарностью.