Селен Прокрутите вниз на только что открытом теле - PullRequest
0 голосов
/ 04 октября 2019

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

Я выбрал тело появившегося нового элемента и попробовал следующее:

from selenium import webdriver
from selenium import Keys
driver = webdriver.get(url)
button = driver.find_element_by_xpath(pathto)
button.click()
body = driver.find_element_by_css('body')
body.send_keys(Keys.PAGE_DOWN)

Это на самом деле ничего не делает как есть. Однако, если я сначала вручную нажму на новый всплывающий элемент, прежде чем делать body.send_keys(Keys.PAGE_DOWN), он прокручивается. Один из способов решить эту проблему - использовать ActionChains, чтобы щелкнуть правой кнопкой мыши тело, прежде чем прокрутить вниз. Непосредственное использование .click() на теле не работает, так как оно щелкает ссылку в теле.

Есть ли более эффективные способы сделать это? В частности, я несколько боюсь, что меню правой кнопки мыши, которое открывается, когда я использую мой текущий метод, может испортить остальную часть очистки. Есть ли хотя бы способ гарантировать, что он не мешает? Другим решением может быть как-то «выбрать» или щелкнуть элемент body в пределах селена, так есть ли какие-нибудь предложения для этого?

1 Ответ

0 голосов
/ 04 октября 2019

Вы можете попробовать использовать клавишу END вместо клавиши DOWN. Это стоит попробовать:

from selenium.webdriver.common.keys import Keys 

driver = webdriver.get(url)
button = driver.find_element_by_xpath(pathto)
button.click()

driver.find_element_by_tag_name('body').send_keys(Keys.END) 

Вам также может понадобиться щелкнуть всплывающее окно, чтобы сначала сфокусировать его:

from selenium.webdriver.common.keys import Keys 

driver = webdriver.get(url)
button = driver.find_element_by_xpath(pathto)
button.click()

# click popup menu to get it into focus
popup_menu = driver.find_element_by_xpath(pathToPopupMenu)
popup_menu.click()

driver.find_element_by_tag_name('body').send_keys(Keys.END) 
...