• selenium自动化定位方法


         用selenium操作浏览器进行自动化操作其实就是通过元素属性执行相关操作。所以,我们要知道怎样去查找元素,定位元素。

    常见的定位属性有:

    #查找元素的id 
    find_elements_by_id(id)
    find_elements_by_id(id)
    #查找元素的name find_element_by_name(name)
    find_elements_by_name(name)
    #查找元素的链接文本 find_element_by_link_text(link_text)
    find_elements_by_link_text(link_text)
    #查找元素的链接的部分文本 find_element_by_partial_link_text(link_text)
    find_elements_by_partial_link_text(link_text)
    #查找元素的标签名 find_element_by_tag_name(name)
    find_elements_by_tag_name(name)
    #查找元素的xpath find_element_by_xpath(xpath) #查找元素内的子元素的xpath find_elements_by_xpath(xpath) #查找一个元素的类名 find_element_by_class_name(name) #查找元素的类名 find_elements_by_class_name(name) #查找并返回一个元素的CSS 选择器 find_element_by_css_selector(css_selector) #查找并返回多个元素的CSS 选择器列表 find_elements_by_css_selector(css_selector)

    webdriver中常用的操作方法有:

    .click()                    进行点击操作,用于点击一个按钮。

    .send_keys()           在对象上模拟按键输入,用于在一个输入框里输入内容。

    .clear()                   清除对象的内容。

    .text                      获取该元素的文本。

    .submit()                提交表单。

    .get_attrbute          获得属性值。

    以百度首页为例:

    #coding:utf-8
    from selenium import webdriverimport time
    brower = webdriver.Firefox()
    brower.get("http://www.baidu.com")
    
    #根据元素的类名进行定位
    brower.find_element_by_class_name('s_ipt').send_keys('12306')
    
    #根据元素的id进行定位 
    brower.find_element_by_id('kw').send_keys('12306')
    
    #根据元素的name进行定位
    brower.find_element_by_name('wd').send_keys('selenium')
    
    #根据元素的xpath进行定位
    brower.find_element_by_xpath("//input[@id = 'kw']").send_keys('selenium')
    
    #根据元素的链接文本进行定位
    brower.find_element_by_link_text(u'糯米').click()
    
    #根据元素的CSS选择器进行定位
    #----------------第一种id进行定位------------------
    brower.find_element_by_css_selector('#kw').send_keys(u'定位')
    brower.find_element_by_css_selector('#su').click()
    
    #----------------第二种属性元素定位------------------
    brower.find_element_by_css_selector('input[id = "kw"]').send_keys(u'自动化')
    brower.find_element_by_css_selector('input[id = "su"]').click()
    
    #----------------第三种标签进行定位------------------
    brower.find_element_by_css_selector('input.s_ipt').send_keys(u'百度')
    brower.find_element_by_css_selector('input.bg').click()
    
    #----------------第四种class属性组合定位------------------
    brower.find_element_by_css_selector('span.bg>input.s_ipt').send_keys(u'测试')
    brower.find_element_by_css_selector('span.bg>input.bg').click()
    
    #----------------第五种id属性组合定位------------------
    brower.find_element_by_css_selector('span>input#kw').send_keys(u'地铁')
    brower.find_element_by_css_selector('span>input#su').click()
    
    #----------------第六种class属性定位------------------
    brower.find_element_by_css_selector('.s_ipt').send_keys(u'高铁')
                          #或者
    brower.find_element_by_css_selector('.s_btn').click()
    brower.find_element_by_css_selector('.bg.s_btn').click()
    
    #----------------第七种class与id组合定位------------------
    brower.find_element_by_css_selector('.bg.s_ipt_wr.quickdelete-wrap>#kw').send_keys('selenium')
    brower.find_element_by_css_selector('#su').click()
    
    time.sleep(3)
    brower.quit()

    注:用css定位时只有元素"id"可以用#,元素"class"用"."

  • 相关阅读:
    InjectAPC全部项目(Win32和Win64位)
    Codeforces Round #377 (Div. 2)
    Codeforces Canada Cup 2016
    UVa 1395 (最小生成树)
    空间表SpaceList
    线程中的临界区的应用
    【题解】狼和羊-C++
    【基础算法-树状数组】入门-C++
    【题解】在你窗外闪耀的星星-C++
    【题解】[NOIP模拟题]我要的幸福-C++
  • 原文地址:https://www.cnblogs.com/glumer/p/6117732.html
Copyright © 2020-2023  润新知