• Python_selenium_WebDriver API,ActionChains鼠标, Keys 类键盘


    WebDriver 提供的八种定位方法:

    find_element_by_id()
    
    find_element_by_name()
    
    find_element_by_class_name()
    
    find_element_by_tag_name()
    
    find_element_by_link_text()
    
    find_element_by_partial_link_text()
    
    find_element_by_xpath()
    
    find_element_by_css_selector()

    WebDriver API

    浏览器最大化:
    maximize_window()
    
    设置浏览器宽、高:
    set_window_size(480, 800)
    
    控制浏览器后退,前进,刷新:
    back()
    forward()
    refresh()

    WebElement接口常用方法:

    clear 清除元素的内容

    send_keys 在元素上模拟按键输入

    click 单击元素

    submit 提交表单

    size 返回元素的尺寸

    text 获取元素的文本

    get_attribute(name) 获得属性值

    is_displayed() 设置该元素是否用户可见

      ActionChains 类鼠标操作方法:

    在WebDriver中,将关于鼠标操作的方法封装在ActionChains类中来使用:
      perform() 执行所有ActionChains中存储的行为
      context_click()  右击
      double_click()   双击
      drag_and_drop()  拖动
      move_to_element()  鼠标悬停在一个元素上
      click_and_hold()   按下鼠标左键在一个元素上

    鼠标右击操作
    对于ActionChains类所提供的鼠标方法与前面学过的click()方法的用法有所不同。
    鼠标操作步骤:
    from selenium.webdriver import ActionChains
    导入提供鼠标操作的ActionChains类。
    ActionChains(driver)
    调用ActionChains()类,将浏览器驱动driver做为参数传入。
    context_click(right_click)
    context_click()方法用于模拟鼠标右键操作,在调用时需要指定元素定位。
    perform()
    执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作。

    
    

    drag_and_drop() 拖动

    
    

    #引入ActionChains类

    from selenium.webdriver.common.action_chains import ActionChains ...

    #定位元素的原位置

    element = driver.find_element_by_name("xxx")

    #定位元素要移动到的目标位置

    target = driver.find_element_by_name("xxx")

    #执行元素的移动操作

    ActionChains(driver).drag_and_drop(element,target).perform()

    move_to_element() 鼠标悬停(拖动+悬停)

    #引入ActionChains类

    from selenium.webdriver.common.action_chains

    import ActionChains

    #-------------------------------

    '''鼠标拖动'''

    element = driver.find_element_by_name("xxx")  #定位元素的原位置

    target = driver.find_element_by_name("xxx") #定位元素要移动到的目标位置

    ActionChains(driver).drag_and_drop(element,target).perform()#执行元素的移动操作

    #---------------------------

    '''鼠标悬停'''

    from selenium.webdriver import ActionChains

    driver.implicitly_wait(10)  #隐式等待10s
    mouse_point=driver.find_element_by_xpath("/html/body/div[6]/div[3]/div[1]/div/div[2]/ul/li[2]/span")  #定位目标点
    ActionChains(driver).move_to_element(mouse_point).perform()  #悬浮在这个点上

    driver.find_element_by_link_text("陕西论坛").click()  #点击文字
    time.sleep(4)  #强制等待4s

     Keys 类键盘操作的常用方法:

    Keys 类键盘操作的常用方法:
    引入Keys类:
        from selenium.webdriver.common.keys import Keys
    常用方法:
      send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
      send_keys(Keys.SPACE)  空格键(Space)
      send_keys(Keys.TAB)  制表键(Tab)
      send_keys(Keys.ESCAPE)  回退键(Esc)
      send_keys(Keys.ENTER) 回车键(Enter)
      send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
      send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
      send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
      send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)

    ...

    #输入框输入内容

    driver.find_element_by_id("kw1").send_keys("seleniumm")

    time.sleep(3)

    #删除多输入的一个m

    driver.find_element_by_id("kw1").send_keys(Keys.BACK_SPACE)

    time.sleep(3)

    ...

      打印信息(断言的信息):

      title 
      返回当前页面的标题
      current_url
      获取当前加载页面的URL
      text 
      获取元素的文本信息

    #获得前面title,打印

    title = driver.title print title

    #获得前面URL,打印

    now_url = driver.current_url print now_url

    #获得登录成功的用户,打印

    now_user=driver.find_element_by_id("spnUid").text

    print (now_user)

     webdriver提供定位一组对象的方法:

    find_elements_by_id()
    find_elements_by_name()
    find_elements_by_class_name()
    find_elements_by_tag_name()
    find_elements_by_link_text()
    find_elements_by_partial_link_text()
    find_elements_by_xpath()
    find_elements_by_css_selector()

    ……

    # 选择页面上所有的tag name 为input的元素

    inputs = driver.find_elements_by_tag_name('input')

    #然后从中过滤出tpye为checkbox的元素,单击勾选

    for input in inputs:

      if input.get_attribute('type') == 'checkbox':

      input.click()

    ……

    ……

      #选择所有的type为checkbox的元素并单击勾选

    checkboxes = driver.find_elements_by_css_selector('input[type=checkbox]')

    for checkbox in checkboxes:

      checkbox.click()

    ……

    层级定位:

    ……
    #点击Link1链接(弹出下拉列表)
    driver.find_element_by_link_text('Link1').click()
    
    #在父亲元件下找到link为Action的子元素
    menu = driver.find_element_by_id('dropdown1').find_element_by_link_text('Another action')
    
    #鼠标移动到子元素上
    ActionChains(driver).move_to_element(menu).perform()
    ……

     WebDriver 控制js弹窗

        在实际系统中,在完成某些操作时会弹出对话框来提示,主要分为"警告消息框","确认消息框","提示消息对话"三种类型的对话框。
    1.警告消息框(alert)  警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作。
    2.确认消息框(confirm)
      确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮和"取消"按钮。
    3.提示消息对话(prompt)  
    提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个"确定"按钮和一个"取消"按钮。选择"确认"会响应对应的提示信息,选择"取消"会关闭对话框。

          switch_to_alert()    #定位弹出对话

          text                    #获取对话框文本值

          accept()                   #相当于点击"确认"

          dismiss()                 #相当于点击"取消"

          send_keys()               # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time driver=webdriver.Chrome()
    driver.get(“https://www.baidu.com/”)
    driver.implicitly_wait(10)#隐式等待10秒 mouse=driver.find_element_by_link_text(“设置”)
    #鼠标移动到“设置”按钮
    ActionChains(driver).move_to_element(mouse).perform()
    driver.find_element_by_link_text(“搜索设置”).click() #点击“搜索设置”#强制等待4秒,注意:这里使用隐式等待或显示等待都将无法获取元素
    time.sleep(4)#分两步,先定位下拉框,再点击选项
    choice = driver.find_element_by_name("NR")
    #choice.find_element_by_xpath('//*[@id="nr"]/option[3]').click() Select(choice).select_by_value("50") time.sleep(2)

    #使用Select().select_by_index进行定位

    案例:利用值定位
    
    #使用Select().select_by_index进行定位#Select(choice).select_by_index(2)
    #Select(choice).select_by_value(“50”)
    Select(choice).select_by_text ("每页显示50条")

    select里面方法除了上面介绍的三种,还有更多的功能如下:

    select_by_index()  :通过索引定位

    select_by_value()  :通过value值定位

    select_by_visible_text() :通过文本值定位

    deselect_all()          :取消所有选项

    deselect_by_index()     :取消对应index选项

    deselect_by_value()      :取消对应value选项

    deselect_by_visible_text() :取消对应文本选项

    first_selected_option()  :返回第一个选项

    all_selected_options()   :返回所有的选项

  • 相关阅读:
    Careercup
    【LeetCode & 剑指offer刷题】树题1:二叉树的遍历总结(前序、中序、后序、层序、 之字形层序、垂直遍历)
    【LeetCode & 剑指offer刷题】链表题11:Palindrome Linked List
    【LeetCode & 剑指offer刷题】链表题9:Add Two Numbers
    【LeetCode & 剑指offer刷题】链表题10:328 Odd Even Linked List
    【LeetCode & 剑指offer刷题】链表题8:35 复杂链表的复制(138. Copy List with Random Pointer)
    【LeetCode & 剑指offer刷题】链表题6:23 有环链表问题-链表中环的入口结点(141. Linked List Cycle)
    【LeetCode & 剑指offer刷题】链表题7:25 合并两个排序的链表(系列)(21. Merge Two Sorted Lists)
    【LeetCode & 剑指offer刷题】链表题5:52 两个链表的第一个公共结点(Intersection of Two Linked Lists)
    【LeetCode & 剑指offer刷题】链表题4:22 删除链表中倒数第k个结点(19. Remove Nth Node From End of List)
  • 原文地址:https://www.cnblogs.com/hellangels333/p/8777039.html
Copyright © 2020-2023  润新知