• 模拟浏览器动作,selenium模块的使用


     1 import time
     2 from selenium import webdriver
     3 from selenium.webdriver import ActionChains
     4 
     5 # 创建一个浏览器对象,支持各个浏览器,参数是浏览器驱动
     6 web = webdriver.Chrome(executable_path='chromedriver')
     7 
     8 # 命令浏览器打开一个网页
     9 web.get(url='https://www.baidu.com')
    10 """
    11 find系列:
    12     除了by_id其余返回结果都是多个。
    13     find_element_by_id     
    14     find_element_by_name
    15     find_element_by_xpath
    16     find_element_by_link_text
    17     find_element_by_partial_link_text
    18     find_element_by_tag_name
    19     find_element_by_class_name
    20     find_element_by_css_selector
    21 """
    22 
    23 # 通过find系列方法,获取到指定的标签
    24 search_input = web.find_element_by_id('kw')
    25 
    26 # 为标签添加内容(值)
    27 search_input.send_keys('宝宝小可爱')
    28 time.sleep(2)
    29 
    30 # 获取指定标签
    31 btn = web.find_element_by_id('su')
    32 
    33 # 对标签进行点击
    34 btn.click()
    35 time.sleep(2)
    36 
    37 # 执行js代码
    38 web.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    39 time.sleep(2)
    40 # 关闭浏览器对象
    41 web.close()
    42 web.quit()
    43 
    44 
    45 # 动作链:
    46 # ActionChains是一种自动执行低级别交互的方法,例如鼠标移动,鼠标按钮操作,按键和上下文菜单交互。
    47 # 这对于执行更复杂的操作非常有用,例如悬停和拖放。
    48 
    49 # 创建一个动作链
    50 action = ActionChains(web)
    51 action.__init__(web)  # 创建一个新的ActionChains。
    52 action.click()  # 单击元素。
    53 action.click_and_hold()  # 按住元素上的鼠标左键。
    54 action.context_click()  # 在元素上执行上下文单击(右键单击)。
    55 action.double_click()  # 双击元素。
    56 
    57 action.drag_and_drop('source', 'target')  # 按住源元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮。
    58 # 参数:source:鼠标按下的元素。target:要鼠标移动的元素。
    59 
    60 action.drag_and_drop_by_offset('source', 'xoffset', 'yoffset')  # 按住源元素上的鼠标左键,然后移动到目标偏移并释放鼠标按钮。
    61 # 参数:source:鼠标按下的元素。xoffset:移动到的X偏移量。yoffset:移动到的Y偏移量。
    62 
    63 action.move_by_offset('xoffset', 'yoffset')  # 将鼠标移动到当前鼠标位置的偏移量。
    64 # 参数:xoffset:要移动到的X偏移量,作为正整数或负整数。yoffset:要移动到的Y偏移量,作为正整数或负整数。
    65 
    66 action.move_to_element('to_element ')  # 将鼠标移动到元素的中间。to_element:要移动到的WebElement。
    67 
    68 action.move_to_element_with_offset('to_element', 'xoffset', 'yoffset ')  # 将鼠标移动指定元素的偏移量。偏移量相对于元素的左上角。
    69 # 参数:to_element:要移动到的WebElement。xoffset:移动到的X偏移量。yoffset:移动到的Y偏移量。
    70 
    71 action.pause(1)  # 在几秒钟内暂停指定持续时间内的所有输入
    72 action.release()  # 释放元素上的鼠标按钮。
    73 action.perform()  # 执行所有存储的操作。
    74 action.reset_actions()  # 清除已存储在本地和远程端的操作。
    75 
    76 action.key_down('value')  # 仅发送按键,而不释放它。只能与修改键(Control,Alt和Shift)一起使用。
    77 # 参数:value:要发送的修饰键。值在Keys类中定义。element:发送密钥的元素。如果为None,则将密钥发送到当前关注的元素。
    78 
    79 action.key_up('value')  # 释放修改键。
    80 # 参数:value:要发送的修饰键。值在Keys类中定义。element:发送密钥的元素。如果为None,则将密钥发送到当前关注的元素。
    81 
    82 action.send_keys('*keys_to_send')  # 将键发送到当前聚焦元素。keys_to_send:要发送的密钥。修饰符键常量可以在“Keys”类中找到。
    83 
    84 action.send_keys_to_element('element', '*keys_to_send')  # 将键发送到元素。
    85 # 参数:element:发送密钥的元素。keys_to_send:要发送的密钥。修饰符键常量可以在“Keys”类中找到。
    86 
    87 # 举例按住ctrl+C:
    88 # action.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()    #按住ctrl,添加c再松开

    代码分为两部分:

      上面简单演示了一下打开百度,并进行搜索内容,滚动下屏幕,关闭浏览器。

      下面是创建一个动作链,并列举动作链的方法,以及用处、参数的解释。

  • 相关阅读:
    TensorFlow object detection API
    bounding box的简单理解
    OverFeat学习
    tensorflow调试tfdbg
    2018.7-2019.4记录
    人工智能未来读后感 ----by RayKurzweil
    matlab exe
    神经网络的基础
    研究生的论文
    卷积神经网络经验
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/11110464.html
Copyright © 2020-2023  润新知