Selenium由ActionChains翻页

Mat*_*tej 5 python ubuntu selenium

我有一个问题,使用函数在Ubuntu 16.04 x64上通过Selenium的ActionChains在python 3.5中使用PageDown键向下滚动.

我想要的是我的程序向下滚动PageDown两次,所以它最后到达底部,所以我可以选择始终可见的元素.尝试使用Keys.END创建另一个函数,但它不起作用,所以我认为它与ActionChains没有关闭或某事有关.

该函数如下所示:

from selenium.webdriver.common.action_chains import ActionChains
Run Code Online (Sandbox Code Playgroud)

...

def scrollDown(self):
    body = browser.find_element_by_xpath('/html/body')
    body.click()
    ActionChains(browser).send_keys(Keys.PAGE_DOWN).perform()
Run Code Online (Sandbox Code Playgroud)

我在另一个文件中使用它:

mod.scrollDown()
Run Code Online (Sandbox Code Playgroud)

我第一次使用它时,它会向下滚动,就像按下PageDown键一样,而另一次没有任何反应.无论我在哪里调用它,第二个(或第三个......)时间都不会执行.尝试手动完成并按下PageDown按钮两次,按预期工作.控制台不会返回任何错误,而不是IDE.

Cha*_*hai 11

也许,如果它与动作链有关,你可以这样做:

body = browser.find_element_by_css_selector('body')
body.send_keys(Keys.PAGE_DOWN)
Run Code Online (Sandbox Code Playgroud)

希望它有效!

  • 请记住使用“from selenium.webdriver.common.keys import Keys”导入“Keys” (3认同)

小智 8

我必须单击主体才能使 Keys.PAGE_DOWN 工作,但不需要使用操作链:

from selenium.webdriver.common.keys import Keys

body = driver.find_element_by_css_selector('body')
body.click()
body.send_keys(Keys.PAGE_DOWN)
Run Code Online (Sandbox Code Playgroud)