python Селен Выполнить Onscroll javascript - PullRequest
2 голосов
/ 04 февраля 2020

Я работаю с тяжелой веб-страницей js, и у меня есть элемент div, который выглядит следующим образом:

<div id="results-ItemSearch" class="itemresults" onscroll="loadMoreItems(event)">
....
</div>

Это одна из тех веб-страниц, которая выполняет автопрокрутку (еще более усложняется тем, что что в одном окне есть три панели, и мне трудно добраться до панели, с которой я хочу работать), и обычно я внедряю что-то подобное в селене:

no_of_pagedowns = 1
while no_of_pagedowns:
    browser.find_element_by_xpath('/html/body').send_keys(Keys.PAGE_DOWN)
    time.sleep(1)
    no_of_pagedowns-=1

однако, когда Я делаю это на этой веб-странице, я получаю исключение selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable.

Я попытался выбрать с помощью css, но это тоже ничего не дает. Я также пытался waiting в течение примерно 15 секунд для полной загрузки, но, похоже, это тоже не сработало.

Таким образом, мне было интересно, есть ли способ напрямую исключить JS loadMoreItems(event) через селен.

Буду признателен за любую помощь - потратил 4 часа на это сейчас!

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете попробовать прокрутку с помощью JavaScript

element =  browser.find_element_by_id('results-ItemSearch')
driver.execute_script('arguments[0].scrollTo(0, arguments[0].scrollHeight)', element)

или

driver.execute_script('scrollBy(0, arguments[0].scrollHeight))', element)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...