Как сделать l oop "refre sh page" в Selenium - PullRequest
0 голосов
/ 29 февраля 2020

Я использую Selenium для извлечения таблиц из Excalibur. Когда вы загружаете в него файл, вы должны обновлять страницу sh до тех пор, пока страница не будет перенаправлена ​​в рабочее пространство. Показывает:

<div class="container"> == $0 empty

Затем при рефракции sh показывает:

<div class="container">
 <div class="row pb-4">
 <div class="row">
 <div class="row">

Я использовал «time.sleep ()», но в зависимости от файла и страниц время ожидания увеличивается и иногда я получаю это ошибка. Тогда я попробовал с:

`while True:
    if driver.find_element_by _linked_text('Workspace'):
        break
    else:
        driver.refresh()`

Только зависает и страница не обновляется

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Если страница автоматически перенаправит вас туда, где вы ожидаете этот элемент, то я бы порекомендовал использовать встроенную WebDriverWait функцию селена. Это примет в качестве аргумента максимальное время ожидания загрузки элемента и вернет этот элемент, как только он будет найден. Примерно так:

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

driver.refresh()
my_element = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Workspace")))
# code that needs this element loaded

Это заставит код зависнуть на срок до 30 секунд, но он может продолжаться раньше, если элемент загружается раньше. Если элемент не найден через 30 секунд, выдается исключение.

Подробнее о ожиданиях селена можно узнать здесь

0 голосов
/ 29 февраля 2020

Вам, вероятно, нужно добавить refre sh, чтобы охладиться так:

from time import sleep
while True:
    if driver.find_element_by _linked_text('Workspace'):
        break
    else:
        driver.refresh()
        sleep(2)

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

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