• selenium自动化JS滚动条操作及键盘操作


    一、滚动条

    1、首先找到元素,找元素就不写了,通过定位方式找就好了

    2、js自动滚动

      先滚动到可视区域后
      参数一、 javacript 脚本, 参数二、传给 js 脚本的参数
      arguments 是列表, 只传递了一个值【0】
      js 脚本用 arguments 接受外部的参数
      js 脚本中用 scrollIntoView() 自动滚动到可视区域
      driver.execute_script("arguments[0].scrollIntoView()", ele)
      scrollIntoView() 默认与页面顶部对齐
      scrollIntoView(false) 页面底部对齐

    1、直接滚动到页面底部
      driver.execute_script("window.scrollTO(0, document.body.scrollHeight)")
    2、直接滚动到页面顶部
      driver.execute_script("window.scrollTo(document.body.scrollHeight, 0)")
    3、移动到元素element对象的“底端”与当前窗口的“底部”对齐
      driver.execute_script("arguments[0].scrolllntoView(false);", element)
    4、移动到元素element对象的“顶端”与当前窗口的“顶部”对齐
      driver.execute_script("arguments[0].scrolllntoView();", element)

    这个是找百度客服电话,不适合电商之类的,

    from selenium import webdriver
    import time
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    """
    滚动的目的:将你要操作的元素,滚动到可视区域后,再操作
    由js实现,
    """
    # 键盘操作
    from selenium.webdriver.common.keys import Keys
    option = webdriver.ChromeOptions()
    option.add_argument('disable-infobars')
    
    driver = webdriver.Chrome(chrome_options=option)
    driver.get("https://www.baidu.com/")
    driver.maximize_window()  # 最大化浏览器
    # Keys.ENTER 模拟回车
    driver.find_element_by_id('kw').send_keys("百度", Keys.ENTER)
    # 等待搜索结果出现
    loc = (By.XPATH, '//a[text()="客服电话"]')
    WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc))
    # 找到要滚动的元素
    ele = driver.find_element(*loc)
    
    # 先滚动到可是区域后,
    # 参数1、JavaScript脚本 参数2、传给JS脚本
    # JS脚本中,用 arguments 来接收外部的参数
    # js脚本中,用 scrollIntoView() 自动滚动到可视区域
    # arguments 是列表,外部传递的列表, 只传递了一个值【0】
    driver.execute_script('arguments[0].scrollIntoView();', ele)
    # scrollIntoView() 默认与页面顶部对齐
    # scrollIntoView(false) 页面底部对齐
    
    # 再去点击
    time.sleep(2)
    driver.find_element(*loc).click()
    
    """
    直接滚动到页面底部
    driver.execute_script("window.scrollTO(0, document.body.scrollHeight)")
    直接滚动到页面顶部
    driver.execute_script("window.scrollTo(document.body.scrollHeight, 0)")
    """
    driver.quit()

    二、键盘操作

    导入键盘操作库:Keya ,里面有各种键盘的操作,可以看一下它的源码

    from selenium import webdriver
    import time# 键盘操作
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    driver.maximize_window()  # 最大化浏览器
    # Keys.ENTER 模拟回车
    driver.find_element_by_id('kw').send_keys("百度", Keys.ENTER)
    # Keys.CONTROL, 'c'  模拟 Ctrl+c 操作
    driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')
  • 相关阅读:
    C# -- 使用线程池 ThreadPool 执行多线程任务
    Bootstrap -- 插件: 按钮状态、折叠样式、轮播样式
    C# -- 等待异步操作执行完成的方式
    Bootstrap -- 插件: 提示工具、弹出框、 警告框消息
    Bootstrap -- 插件: 模态框、滚动监听、标签页
    Bootstrap -- 缩略图、进度条、列表组、面板
    C# -- 使用委托 delegate 执行异步操作
    Bootstrap -- 导航栏样式、分页样式、标签样式、徽章样式
    Bootstrap -- 下拉菜单、输入框组、导航菜单
    Mutex
  • 原文地址:https://www.cnblogs.com/yongzhuang/p/12512923.html
Copyright © 2020-2023  润新知