Я создал скрипт, использующий селен для динамического создания текста. Это требование, что я использую селен, поэтому в этом случае я не хочу go для xhr. Я пытаюсь использовать pseudo selector
в селене, определяя explicit wait
в нем. Поскольку селен не поддерживает pseudo selector
, как в :contains()
, я использовал javascript команду driver.execute_script()
для достижения цели.
Теперь способ, которым я пытался работать, работает непоследовательно, поскольку текст, который я хочу взять не находится в области просмотра. Если я прокручиваю немного вниз вручную во время работы скрипта, он работает. Кстати, Xpath здесь не вариант.
Как прокрутить элемент в поле зрения, используя псевдоселектор внутри driver.execute_script ()?
Я пробовал как [работает непоследовательно]:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
with webdriver.Chrome() as driver:
wait = WebDriverWait(driver, 10)
driver.get('https://www.nyse.com/quote/XNYS:AAN')
item = wait.until(
lambda driver: driver.execute_script('''return $('span:contains("AARONS")')[0];''')
)
print(item.text)
Ожидаемый результат:
AARONS INC
PS Прежде чем пометить этот пост как дубликат, убедитесь, что вы хотя бы прочитайте название вопроса.