Python Selenium: перебирать веб-страницу, пока элемент не найден - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь написать тест автоматизации, который перейдет на определенную веб-страницу, нажмите на ссылку внутри и останетесь на следующей странице. Эта следующая страница не всегда будет отображаться (иногда она будет отображать ошибку соединения), поэтому я заставляю ее находить определенный элемент (который, как предполагается, находится на странице, которую я ищу), и если элемент найден, он остается там, если нет, то вернитесь к началу сценария (создание цикла). Я могу заставить его перейти на страницу и щелкнуть ссылку, но когда возникает ошибка соединения, она просто остается там и не возвращается. Я довольно новичок в питоне и селене, поэтому, возможно, есть вещи, которые я до сих пор не до конца понимаю, но я учусь на практике. Я застрял здесь:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException

def driver_init():
    driver = webdriver.Chrome(executable_path=r'C:#the path')
    driver.get('#the webpage')
    element = driver.find_element(By.XPATH, '//*[@id="conten"]/table/tbody/tr[1]/td/a')
    element.click()
    elt = driver.find_element(By.XPATH,'//*[@id="logint"]/div/a/img')
    elt = True

driver_init()
while elt = False:
    driver_init()

Как я могу заставить его повторить скрипт, если элемент не показан? или как заставить его повторить скрипт, если произошла ошибка соединения? Это не обновление страницы, это возвращение к началу, я пробовал много вещей, но ни одна из них не помогла мне, так что может быть какой-то текст остался от этих попыток. Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я не собираюсь здесь кодировать. Я даю вам написанное решение и хочу, чтобы вы его кодировали.


Шаг 1: создайте два метода: 1-й инициализирует веб-драйвер. 2-е убивает вебдрайвера


Шаг 2. Объявите FLAG как false, и после инициализации веб-драйвера и вызова Chrome выполните поиск нужного элемента с помощью WEBDRIVER WAIT. Если найдено, перейдите к следующему шагу и установите для FLAG значение true.


Шаг 3. Если FLAG все еще имеет значение false, вызовите метод KILL WEBDRIVER, а затем вызовите driver_init (): метод


0 голосов
/ 04 июля 2018

Прежде всего вы должны использовать selenium wait , чтобы дождаться появления элемента. Повторение части кода при сбое не является обычной практикой. Почему эта страница не всегда загружается правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...