"href" из tag_name ("a") выдает исключение - PullRequest
0 голосов
/ 22 января 2020

Я могу получить ссылки по tag_name, но не могу извлечь href из "a".

links = scroll_box.find_elements_by_tag_name('a')
names = [name.get_attribute('href') for name in links if '.com/' in name.get_attribute('href')]

Вторая строка кода, выбрасывающая указанное ниже исключение.

StaleElementReferenceException: stale element reference: element is not attached to the page document

1 Ответ

0 голосов
/ 22 января 2020

Вы получаете все ссылки и некоторые из них изменяются при попытке получить hrefs, и это причина для StaleElementReferenceException. Вы можете попытаться дождаться ссылки с необходимыми ссылками.

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

# ...

names = [link.get_attribute('href') for link in WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'a[href$=".com/"]')))]

В приведенном выше примере ссылки получают a[href$=".com/"] со всей страницы, а не scroll_box дочерние элементы. Если вы хотите использовать scroll_box, измените локатор на scroll_box_selector a[href$=".com/"] или используйте пользовательское ожидание или внедрите пользовательский expected_conditions

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