автоматически невозможно щелкнуть элемент в Webdriver (python) - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь запрограммировать скрипт Python, который автоматически загружает таблицу с веб-страницы.Таблица не полностью загружена, когда я просто иду по указанному адресу URL.Я должен нажать на ссылку «Загрузить еще».Это я пытался сделать по сценарию ниже.

delay = 2
driver = webdriver.Chrome('chromedriver')
driver.get("url")
time.sleep(delay + np.random.rand() )
click_except = 0
while click_except == 0:
try:
    driver.find_element_by_id("id").click()
        time.sleep(delay + np.random.rand() )
    except:
        click_except = 1
time.sleep(delay + np.random.rand() )
web = driver.find_element_by_id("id_table")
str = (web.text)

Раньше это работало, но теперь не работает ... тот же код!Я переехал в другую страну, и я использую другой Wi-Fi.Может ли это иметь какой-либо эффект?На самом деле строка с командой click все еще работает, когда обрабатывается отдельно и вручную.Он не работает вместе с циклом «Пока и попробуй».Есть идеи, что не так?Или любая идея, как лучше запрограммировать это?

Задержка должна дать веб-странице достаточно времени для загрузки.

1 Ответ

0 голосов
/ 11 декабря 2018

Я рекомендую вам избегать ожидания в течение определенного периода времени, лучше дождаться определенного элемента, и селен поддерживает его, проверьте: https://selenium -python.readthedocs.io / waits.html # явный-waits

Вы можете сделать что-то вроде:

driver = webdriver.Chrome('chromedriver')
driver.get('url')
wait_for_id('id').click()
str = wait_for_id('id_table').text

def wait_for_id(identifier):
    """
    It waits for web element with identifier
    :return: found selenium web element
    """
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, identifier))
    )
    return element
...