python

当前位置:首页 > selenium教程 > 当前文章

selenium教程

selenium滚动鼠标实现网页下拉(运行js)

2020-04-05 191赞 python中国网
每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

  相似文章

  ActionChains类实现鼠标移动网页下拉

  Keys类实现网页下拉

  selenium鼠标操作之前的文章已经说过了不少方法,但是如果是为了完成鼠标滚动来实现网页滚动条的下滑的话,直接运行js比较简单。因为js脚本可以控制滚动条的移动,而selenium又可以执行js,两者结合就能完成下拉网页。下面以百度搜索举例:

  1 打开百度官网,输入python;

  2 点击搜索后,鼠标向右下方随机移动一段距离,然后点击鼠标右键;(从视觉上看光标并没有移动,但是实际上实现了移动,为了证实我们才点击下鼠标右键)

  3 网页滚动条下拉一段随机距离;

  4 关闭网页

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import time
from selenium.webdriver.common.action_chains import ActionChains
import random

def click_url(kwd):
    try:
        driver.get('https://www.baidu.com/')
        input = WebDriverWait(driver, 30).until(
            EC.visibility_of_element_located((By.ID, "kw"))
        )
        input.click() # 先click后clear,直接send_keys容易丢失字符
        input.clear()
        for wd in kwd:
            time.sleep(0.01)
            input.send_keys(wd) # send_keys和click之间间隔时间;一次性输入容易丢失字符
        baidu = WebDriverWait(driver, 20).until(
            EC.visibility_of_element_located((By.ID, "su"))
        )
        baidu.click()  # 点击搜索
        # 等待页面加载完
        next_page = WebDriverWait(driver, 20).until(
            EC.visibility_of_element_located((By.CLASS_NAME,"n"))
        )
        # 鼠标随机移动距离
        width,height = random.randint(30,50),random.randint(450,455)
        # 鼠标右键点击-证实鼠标确实移动了
        ActionChains(driver).move_to_element_with_offset(baidu, width, height).context_click().perform()
        # 滚动条滚动距离
        rand_num = random.random()
        js = 'window.scrollBy(0,{0} *{1})'.format('document.body.scrollHeight',rand_num)
        driver.execute_script(js)
    except Exception as e:
        print('异常',e)
        time.sleep(10)
    else:
        print('点击成功')
    finally:
        time.sleep(6)
        driver.quit()


if __name__ == "__main__":
    option = Options()
    option.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"  # 安装的位置
    driver = webdriver.Chrome(options=option)
    driver.maximize_window()
    click_url('python')

  运行以上代码,就可以看到响应的效果。

文章评论

selenium滚动鼠标实现网页下拉(运行js)文章写得不错,值得赞赏