Как устранить ошибку StaleElementReferenceException: сообщение: ссылка на устаревший элемент: элемент не прикреплен, ошибка с использованием Selenium Ubuntu EC2 с использованием Python - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь извлечь все данные из столбца «Nb B» на этой странице: https://www.coteur.com/cotes-foot.php

Когда я запускаю свой код с Ubuntu P C Он отлично работает но когда я попробовал с EC2 Ubuntu, он не дал мне хорошей отдачи.

Вот мой сервер: ubuntu / images / hvm-ssd / ubuntu-bioni c -18.04-amd64-server-20200611 ( ami-0a63f96e85105c6d3)

Вот сценарий python:

#!/usr/bin/python3
# -*- coding: utf­-8 ­-*-

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.headless = True
options.add_argument("window-size=1400,800")
options.add_argument("--no-sandbox")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)

driver.get('https://www.coteur.com/cotes-foot.php')

#Store url associated with the soccer games
url_links = []
for i in driver.find_elements_by_xpath('//a[contains(@href, "match/cotes-")]'):
    url_links.append(i.get_attribute('href'))

print(len(url_links), '\n')

nb_bookies = []
for i in driver.find_elements_by_xpath('//tr[@id and @role="row" ]/td[last()]'):
    nb_bookies.append(i.text)

print(nb_bookies)

Вот результат:

Traceback (most recent call last):
  File "./coteurchrome.py", line 25, in <module>
    url_links.append(i.get_attribute('href'))
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 141, in get_attribute
    self, name)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 636, in execute_script
    'args': converted_args})['value']
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: headless chrome=83.0.4103.116)

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Для столбца Nb B я пробовал эту строку кода:

print([my_elem for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//tr[@id and @role="row" ]/td[last()]")))])
                                                                                                                                      

Но у меня синтаксическая ошибка

0 голосов
/ 14 июля 2020

Чтобы напечатать значение атрибутов href , вы должны вызвать WebDriverWait для visibility_of_all_elements_located(), и вы можете использовать любую из следующих Стратегий локатора :

...