• webdriver定位元素的方法和基础函数的使用


    一.定位元素

    (1)id定位

              driver.find_element_by_id("id")

    (2)name定位

              driver.find_element_by_name("name")

    (3)class定位

              driver.find_element_by_class_name("class_name")

    (4)tag定位(<div>,<input>,<a>)

              driver.find_element_by_tag_name("input")

    (5)link定位(a里面定义的link_text)

              driver.find_element_by_link_text("百度地图")

    (6)partial link定位(a标签内部名称的一部分)

              driver.find_element_by_partial_link_text("地图")

    (7)XPath定位

             1)绝对路径

                     driver.find_element_by_xpath("/html/body/div/div[2]/div/div/from/span/input")

             2)元素属性定位

                    driver.find_element_by_xpath("//input[@id='kw']")

                    driver.find_element_by_xpath("//*[@class='s_bg']")#不指定标签

             3)层级和属性结

                    driver.find_element_by_xpath("//span[@id='form']/span/input")

             4)使用逻辑运算符定位

                    driver.find_element_by_xpath("//input[@id='aa'and @name='bb']/span/input")

    (8)css定位

             1)class属性定位

                    driver.find_element_by_css_selector(".s_bg")

             2)id属性定位

                    driver.find_element_by_css_selector("#su")

             3)标签名定位

                  driver.find_element_by_css_selector("input")

                  driver.find_element_by_css_selector("span>input")                                #父子关系

                  driver.find_element_by_css_selector("[autocomplete=off]")                   #属性

                  driver.find_element_by_css_selector("form.fm>span>input.s_bg")      #组合

    二.对元素的简单操作函数

    (1)清除

               driver.find_element_by_id().clear()

    (2)点击

              driver.find_element_by_id().click()

    (3)输入

              driver.find_element_by_id().send_keys("username")

    (4)提交表单,可当做回车键使用,与click()互换使用,范围比click()小

             driver.find_element_by_id().submit()

    (5)元素大小

             size=driver.find_element_by_id().size

    (6)获取元素的文本

             text=driver.find_element_by_id().text

    (7)获取类型

            driver.find_element_by_id().get_attribute('type')

    (8)是否可见,返回值是ture or false

             driver.find_element_by_id().is_displayed()

    (9)获取当前页面标题

             title=driver.title

    (10)获取当前页面的url

              url=driver.current_url

    (11)隐式等待

               driver.implicitly_wait(10)

    三.常用的函数

    1.控制浏览器

    (1)控制浏览器大小

             driver.set_window_size(400,800)

    (2)控制浏览器前进后退

             driver.back()

            driver.forward()

    (3)刷新

             driver.refresh()

              
    2.鼠标事件

            导入ActionChains

            from selenium.webdriver.common.action_chains import ActionChains 
             
    (1)鼠标右击

             right_click=driver.find_element_by_id("xx")        #定位要右击的元素

             ActionChains(driver).context_click(right_click).perform()

    (2)鼠标悬停--     move_to_element()

             above=driver.find_element_by_id("id")     

             ActionChains(driver).move_to_element(above).perform()

    (3)鼠标双击操作

             ActionChains(driver).double_click().perform()

    (4)鼠标拖动操作----drag_and_drop(source,target)

              source=driver.find_element_by_id("xx")#source:鼠标拖动的源元素

              target=driver.find_element_by_id("xx")#target:鼠标拖动的目标元素

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

    3.键盘事件

         导入Keys类

         from selenium.webdriver.common.keys import Keys

    (1)driver.find_element_by_id().send_keys(Key.BACK_SPACE)           #删除键

    (2)driver.find_element_by_id().send_keys(Keys.SPACE)                      #空格键

    (3)driver.find_element_by_id().send_keys(Keys.TAB)                            #制表键

    (4)driver.find_element_by_id().send_keys(Keys.ESCAPE)                   #回退键

    (5)driver.find_element_by_id().send_keys(Keys.ENTER)                      #回车键

    (6)driver.find_element_by_id().send_keys(Keys.CONTROL,'a')           #全选

    (7)driver.find_element_by_id().send_keys(Keys.CONTROL,'c')           #复制

    (8)driver.find_element_by_id().send_keys(Keys.CONTROL,'x')           #剪切

    (9)driver.find_element_by_id().send_keys(Keys.CONTROL,'v')           #粘贴

    (10)driver.find_element_by_id().send_keys(Keys.F1)                            #键盘F1

    4.警告框的处理--- switch_to_alert()

    (1)获取警示框的文本

             driver.switch_to_alert().text

    (2)接受警示

             driver.switch_to_alert().accept()

    (3)解散警示框

             driver.switch_to_alert().dismiss()

    (4)发送文本至警告

            driver.switch_to_alert().send_keys(keysToSend)


    5.上传文件----send_keys()

            driver.find_element_by_id("file").send_keys('D:\upload_file.txt')

    6.操作cookie

    (1)获取全部

             driver.get_cookie()

    (2)获取cookie的name

             driver.get_cookie(name)

    (3)添加cookie信息

             driver.add_cookie({'name':'aa','value':'bb'})

    (4)删除特定的cookie

            driver.delete_cookie(name,optionString)

    (5)删除全部cookie

             driver.delete_all_cookies()

    7.执行js得到整个HTML

    html = driver.execute_script("return document.documentElement.outerHTML")

    html=driver.page_source

    elem = driver.find_element_by_xpath("//*")
    source_code = elem.get_attribute("outerHTML")

    elem = wd.find_element_by_css_selector('#my-id')
    html = wd.execute_script("return arguments[0].innerHTML;", elem)

    selenium控制滚轮滑动,即在受控浏览器中使用js来控制滚轮滑动。

    js中scrollIntoView()的用法

    1、移动到元素element对象的“底端”,与当前窗口的“底部”对齐:

    driver.execute_script("arguments[0].scrollIntoView(false);",element)

    2、移动到元素element对象的”顶端“,与当前窗口的”顶部“对齐(默认true):

    driver.execute_script("arguments[0].scrollIntoview();", element)

    3、移动到页面底部:

    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

    4、移动到页面顶部:

    driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")

    5、浏览器页面向下滑动到5000位置:

    driver.execute_script("window.scrollTo(0,5000)")

    6、向下滑动1000个像素

    driver.execute_script("window.scrollBy(0,1000)")

  • 相关阅读:
    使用Java ImageIO类进行批量图片格式转换(转载)
    ORA00980 同义词转换不再有效(ORA00980: synonym translation is no longer valid) (转)
    如何截取字符串
    不能执行已释放 script 的代码(个人碰到的问题)
    查询某个用户下的表
    js验证密码强度
    查看表空间的sql语句
    JavaScript变量提升、作用域
    PL/SQL developer 显示所有数据
    js只能输入数字,小数点(整理)
  • 原文地址:https://www.cnblogs.com/microtiger/p/13617463.html
Copyright © 2020-2023  润新知