精华内容
下载资源
问答
  • webdriver提供了8种定位: 1. id定位:find_element_by_id("id值");id属性是唯一的 1 driver.find_element_by_id("loginName").clear()#用户名输入框的id属性 2 driver.find_element_by_id("...

    在UI层面的自动化测试开发中,元素的定位与操作是基础,也是经常遇到的困难所在。webdriver提供了8种定位:

    1. id定位:find_element_by_id("id值");id属性是唯一的

    1 driver.find_element_by_id("loginName").clear()#用户名输入框的id属性
    2 driver.find_element_by_id("loginName").send_keys("admin")
    3 driver.find_element_by_id("pwdTip").send_keys(Keys.TAB)#密码输入框的id属性
    4 driver.find_element_by_id("pwdTip").send_keys("111111")

    2. name定位:元素的名称,find_element_by_name("name值");name属性值在当前页面可以不唯一

    1 driver.find_elements_by_name("PeriodName")[1].click()#选择学段:初中
    2 driver.find_elements_by_name("SubjectName")[0].click()#选择学科:语文

      find_elements_by_name("PeriodName")是因为当前页面有一组radiobutton的name值是PeriodName,所以可以用定位一组元素的方法findElements,定位出来的是结果一个list

    3. class定位:元素的类名,find_element_by_class_name("class值")

    driver.find_elements_by_class_name("u-btn-levred")[0].click()#选择年级:七年级

    4. tag定位:页面html文档下的各种标签,find_element_by_tag_name("input");

    tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。任意打开一个页面,都会发现大量的<div>、<input>、<a>等tag,所以tag name定位很少用

    5. link定位:专门用来定位文本链接,find_element_by_link_name("text");

    driver.find_element_by_link_text(u"退出").click()#页面右上方的一些个人操作,比如退出、个人中心、消息通知等

    6. partial link定位:是对link定位的一种补充,当链接上的文本内容比较长的时候,可以取文本的一部分进行定位,当然这部分可以唯一地标识这个链接

    ※注:以上的方式稍有局限,且经常页面没有id,name这些属性值,class name重复性较高,link定位有针对性,所以Xpath与Css定位更灵活些。

    7. XPath定位:find_element_by_xpath("");有多种定位策略,用FirePath插件自动生成的涵盖以下几种方式

      1)绝对路径定位:对于没有id,name、classname不好定位的,这也是我最常用的,因为可以通过Firefox的FirePath插件可以方便的获取到xpath值

      2)利用元素属性定位:

      find_element_by_xpath(".//*[@id='Title']"),这里是用的id,也可以用元素其他能够唯一标识的属性,不局限于id、name、class这些;*代表的是标签名,不指定时就可以用*代替

      3)层级与属性结合:下图中就是这种

      4)使用逻辑运算符

    1 driver.find_element_by_xpath(".//*[@id='divword']/input[7]").click()#登录
    2 driver.find_element_by_xpath("html/body/div[4]/div/div[2]/div/div[3]/a[1]").click()#个人页面的发布课程操作

    8. CSS定位(薄弱,用的很少,但很强大,比xpath简洁灵活):使用选择器来为页面元素绑定属性,可以灵活地选择控件的任意属性;find_element_by_css_selector("");同样也可以用FirePATH生成css哟!

      1)通过class属性定位:点号(".")表示通过class属性定位

    1 <input class="u-btn mart5" type="submit" οnclick="return User.check()" value="登录">
    2 driver.find_element_by_css_selector(".u-btn.mart5").click()

      2)通过id属性定位:("#")表示通过id定位元素

    driver.find_element_by_css_selector("#loginName")

      3)通过其他属性定位:("[]"),中括号里的属性可以唯一标识这个元素就可以;属性的值可以加引号,也可以不加

    1 <input class="u-btn mart5" type="submit" οnclick="return User.check()" value="登录">
    2 driver.find_element_by_css_selector("[type=submit]").click()

      4)组合定位

     

    平时使用生成的xpath,id,name,classname这些比较多,今天根据最近这段时间的实践,并参照书上整理了下,发现原来XPath和Css下还有这么多方式,顺便拿最近一些代码试验了下,有些简单的css定位能够成功,有的Firepath生成的并不可用,一些组合定位还需要再研究,是有些难度的。最后记录一种定位方式,更接近底层实现方式的定位,But书上说webdriver更推荐前面那些写法,为毛捏?

    9. 用By定位元素

      除find_element_by_***这种方式,还有另一套写法,也就是统一调用find_element()方法,两个参数,第一个参数是定位的类型,由By提供;第二个参数是定位的具体值

    复制代码
    from selenium.webdriver.common.by import By     #使用By这种定位前要将By类导入
    
    find_element(By.ID,"loginName")
    find_element(By.NAME,"SubjectName")
    find_element(By.CLASS_NAME,"u-btn-levred")
    find_element(By.TAG_NAME,"input")
    find_element(By.LINK_TEXT,"退出")
    find_element(By.PARTIAL_LINK_TEXT,"退")
    find_element(By.XPATH,".//*[@id='Title")
    find_element(By.CSS_SELECTOR,"[type=submit]")
    复制代码

    转载于:https://www.cnblogs.com/liyonglong888/p/10383536.html

    展开全文
  • webdriver提供了8种元素定位方法: 1、id 2、name 3、tag name 4、class name 5、link text 6、partial link text 7、xpath 8、css 以百度首页搜索输入框为例 加载浏览器; from selenium import ...

    webdriver提供了8种元素定位方法:

    1、id

    2、name

    3、tag name

    4、class name

    5、link text

    6、partial link text

    7、xpath

    8、css

    以百度首页搜索输入框为例

     

    加载浏览器;

    from selenium import webdriver

    driver = webdriver.Chrome()

    1 使用ID定位搜索输入框:

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    driver.find_element_by_id('kw')

    2 使用name定位搜索输入框:

    driver.find_element_by_name('wd')

    3 使用tag name搜索输入框:

    driver.find_element_by_tag_name('input')

    driver.find_elements_by_tag_name('input')[1]

    4 使用class name 定位:

    driver.find_element_by_class_name('s_ipt')

    5 使用link text定位“新闻“”链接:

    <a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a>

    driver.find_element_by_link_text("新闻")

    6 使用partial link text定位:

    driver.find_element_by_partial_link_text("新")

    7 使用css定位搜索输入框:

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    a  css通过id定位时,使用"#"表示元素的id

    driver.find_element_by_css_selector("#kw")

    b css通过class name定位时,使用".",表示class name

    driver.find_element_by_css_selector(".s_ipt")

    c css通过tag name定位时,直接使用元素的标签

    driver.find_element_by_css_selector("input")

    d css通过其它属性定位时,直接使用元素的标签

    driver.find_element_by_css_selector("[autocomplete='off']") #注意单双引号的使用

    driver.find_element_by_css_selector("[maxlength='255']")

    e css定位,可以在参数中加入元素的标签名称

    driver.find_element_by_css_selector("input#kw")

    driver.find_element_by_css_selector("input.s_ipt")

    driver.find_element_by_css_selector("input[autocomp='off']")

    f css的层级定位

    driver.find_element_by_css_selector("form#form>span:nth-child(1)>input")

    g css的逻辑运算

    用有一个元素来定位元素时,如果有其他元素的属性和此元素重复,可以组合多个属性来共同定位

    组合多个属性定位元素定位百度搜索框

    driver.find_element_by_css_selector('input[id="kw"] and [name="wd"]')

    8 使用xpath定位:

    a 使用元素定位

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

    driver.find_element_by_xpath("//input[@name='wd']")

    driver.find_element_by_xpath("//input[@class='s_ipt']")

    b xpath层级定位

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

    driver.find_element_by_xpath("//[@class='fm']//span[1]//input")

     

    转载于:https://www.cnblogs.com/holly-j/p/8444811.html

    展开全文
  • webdriver提供了8种定位: 1. id定位:find_element_by_id("id值");id属性是唯一的 driver.find_element_by_id("loginName").clear()#用户名输入框的id属性 driver.find_element_by_id("loginName")...

    在UI层面的自动化测试开发中,元素的定位与操作是基础,也是经常遇到的困难所在。webdriver提供了8种定位:

    1. id定位:find_element_by_id("id值");id属性是唯一的

    driver.find_element_by_id("loginName").clear()#用户名输入框的id属性
    driver.find_element_by_id("loginName").send_keys("admin")
    driver.find_element_by_id("pwdTip").send_keys(Keys.TAB)#密码输入框的id属性
    driver.find_element_by_id("pwdTip").send_keys("111111")

    2. name定位:元素的名称,find_element_by_name("name值");name属性值在当前页面可以不唯一

    driver.find_elements_by_name("PeriodName")[1].click()#选择学段:初中
    driver.find_elements_by_name("SubjectName")[0].click()#选择学科:语文

      find_elements_by_name("PeriodName")是因为当前页面有一组radiobutton的name值是PeriodName,所以可以用定位一组元素的方法findElements,定位出来的是结果一个list

    3. class定位:元素的类名,find_element_by_class_name("class值")

    driver.find_elements_by_class_name("u-btn-levred")[0].click()#选择年级:七年级

    4. tag定位:页面html文档下的各种标签,find_element_by_tag_name("input");

    tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。任意打开一个页面,都会发现大量的<div>、<input>、<a>等tag,所以tag name定位很少用

    5. link定位:专门用来定位文本链接,find_element_by_link_name("text");

    driver.find_element_by_link_text(u"退出").click()#页面右上方的一些个人操作,比如退出、个人中心、消息通知等

    6. partial link定位:是对link定位的一种补充,当链接上的文本内容比较长的时候,可以取文本的一部分进行定位,当然这部分可以唯一地标识这个链接

    ※注:以上的方式稍有局限,且经常页面没有id,name这些属性值,class name重复性较高,link定位有针对性,所以Xpath与Css定位更灵活些。

    7. XPath定位:find_element_by_xpath("");有多种定位策略,用FirePath插件自动生成的涵盖以下几种方式

      1)绝对路径定位:对于没有id,name、classname不好定位的,这也是我最常用的,因为可以通过Firefox的FirePath插件可以方便的获取到xpath值

      2)利用元素属性定位:

      find_element_by_xpath(".//*[@id='Title']"),这里是用的id,也可以用元素其他能够唯一标识的属性,不局限于id、name、class这些;*代表的是标签名,不指定时就可以用*代替

      3)层级与属性结合:下图中就是这种

      4)使用逻辑运算符

    driver.find_element_by_xpath(".//*[@id='divword']/input[7]").click()#登录
    driver.find_element_by_xpath("html/body/div[4]/div/div[2]/div/div[3]/a[1]").click()#个人页面的发布课程操作

    8. CSS定位(薄弱,用的很少,但很强大,比xpath简洁灵活):使用选择器来为页面元素绑定属性,可以灵活地选择控件的任意属性;find_element_by_css_selector("");同样也可以用FirePATH生成css哟!

      1)通过class属性定位:点号(".")表示通过class属性定位

    <input class="u-btn mart5" type="submit" onclick="return User.check()" value="登录">
    driver.find_element_by_css_selector(".u-btn.mart5").click()

      2)通过id属性定位:("#")表示通过id定位元素

    driver.find_element_by_css_selector("#loginName")

      3)通过其他属性定位:("[]"),中括号里的属性可以唯一标识这个元素就可以;属性的值可以加引号,也可以不加

    <input class="u-btn mart5" type="submit" onclick="return User.check()" value="登录">
    driver.find_element_by_css_selector("[type=submit]").click()

      4)组合定位

    平时使用生成的xpath,id,name,classname这些比较多,今天根据最近这段时间的实践,并参照书上整理了下,发现原来XPath和Css下还有这么多方式,顺便拿最近一些代码试验了下,有些简单的css定位能够成功,有的Firepath生成的并不可用,一些组合定位还需要再研究,是有些难度的。最后记录一种定位方式,更接近底层实现方式的定位,But书上说webdriver更推荐前面那些写法,为毛捏?

    9. 用By定位元素

      除find_element_by_***这种方式,还有另一套写法,也就是统一调用find_element()方法,两个参数,第一个参数是定位的类型,由By提供;第二个参数是定位的具体值

    from selenium.webdriver.common.by import By     #使用By这种定位前要将By类导入
    
    find_element(By.ID,"loginName")
    find_element(By.NAME,"SubjectName")
    find_element(By.CLASS_NAME,"u-btn-levred")
    find_element(By.TAG_NAME,"input")
    find_element(By.LINK_TEXT,"退出")
    find_element(By.PARTIAL_LINK_TEXT,"退")
    find_element(By.XPATH,".//*[@id='Title")
    find_element(By.CSS_SELECTOR,"[type=submit]")

     

     

    参考:https://www.cnblogs.com/minieye/p/5803640.html

    展开全文
  • 一、定位元素8种方式1、方法介绍定位一个元素定位多个元素含义find_element_by_id()find_elements_by_id()通过元素id定位find_element_by_name()find_elements_by_name()通过元素name定位find_element_by_xpath()...

    一、定位元素的8种方式

    1、方法介绍

    定位一个元素

    定位多个元素

    含义

    find_element_by_id()

    find_elements_by_id()

    通过元素id定位

    find_element_by_name()

    find_elements_by_name()

    通过元素name定位

    find_element_by_xpath()

    find_elements_by_xpath()

    通过xpath表达式定位

    find_element_by_link_text()

    find_elements_by_link_text()

    通过完整超链接定位

    find_element_by_partial_link_text()

    find_elements_by_partial_link_text()

    通过部分链接定位

    find_element_by_tag_name()

    find_elements_by_tag_name()

    通过标签定位

    find_element_by_class_name()

    find_elements_by_class_name()

    通过类名进行定位

    find_elements_by_css_selector()

    find_elements_by_css_selector()

    2、实例演示

    from selenium import webdriver

    driver = webdriver.Chrome()

    driver.get('https://www.baidu.com/')

    #通过元素id定位()

    driver.find_element_by_id('kw')

    #通过元素name定位

    driver.find_element_by_name('wd')

    #通过类名进行定位

    driver.find_element_by_class_name('s_ipt')

    #通过标签定位

    driver.find_element_by_tag_name('input')

    #通过xpath表达式定位

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

    #通过css选择器进行定位

    driver.find_element_by_css_selector('#kw')

    #通过完整超链接定位

    driver.find_element_by_link_text('新闻')

    #通过部分链接定位

    driver.find_element_by_partial_link_text('hao')

    driver.quit()#关闭所有标签页

    关于xpaht和css的定位比较复杂,请参考:

    XPath获取方法

    XPath语法

    CSS选择器语法

    此处定位可能无法直接查看效果(打印结果为获取的元素对象)

    定位一般都配合一些常用方法使用

    上述实例中都是单个元素定位,多个元素定位关键字请参考上边的方法介绍

    二、WebDriver常用方法(配合定位方法使用)

    1.点击和输入

    clear(): 清除文本,大多数用于输入框

    send_keys (): 模拟按键输入,大多数用于输入框

    click(): 单击元素,用处比较广泛

    更多鼠标键盘事件请参考:

    Python爬虫 - Selenium(5)鼠标事件

    Python爬虫 - Selenium(6)键盘事件

    from selenium import webdriver

    import time

    driver = webdriver.Chrome()

    driver.get('https://www.baidu.com/')

    driver.find_element_by_id("kw").clear()

    driver.find_element_by_id("kw").send_keys("程序猿杂记")

    driver.find_element_by_id("su").click()

    time.sleep(5)

    driver.quit() # 关闭所有标签页

    3.提交

    submit():用于提交表单,相当于回车,应用范围远不及 click()广泛

    from selenium import webdriver

    import time

    driver = webdriver.Chrome()

    driver.get('https://www.baidu.com/')

    driver_id = driver.find_element_by_id("kw")

    driver_id.send_keys("程序猿杂记")

    driver_id.submit()

    time.sleep(5)

    driver.quit() # 关闭所有标签页

    4.获取一些内容

    title:获得当前页面的标题

    current_url:用户获得当前页面的URL

    size: 获取元素的尺寸

    text: 获取元素的文本

    get_attribute(): 获得属性值

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

    from selenium import webdriver

    driver = webdriver.Chrome()

    driver.get('https://www.baidu.com/')

    # 获取当前页面的title

    title = driver.title

    print(title)

    #获取当前页的url

    url = driver.current_url

    print(url)

    # 获得输入框的尺寸

    input_size = driver.find_element_by_id('kw').size

    print(input_size)

    # 返回百度页面底部备案信息

    text = driver.find_element_by_id("cp").text

    print(text)

    # 返回元素的属性值, 可以是 id、 name、 type 或其他任意属性

    attribute = driver.find_element_by_id("kw").get_attribute('type')

    print(attribute)

    # 返回元素的结果是否可见, 返回结果为 True 或 False

    result = driver.find_element_by_id("kw").is_displayed()

    print(result)

    driver.quit() # 关闭所有标签页

    到此这篇关于详解Selenium 元素定位和WebDriver常用方法的文章就介绍到这了,更多相关Selenium 元素定位内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    本文标题: 详解Selenium 元素定位和WebDriver常用方法

    本文地址: http://www.cppcns.com/jiaoben/python/367841.html

    展开全文
  • 在selenium/webdriver/remote/webdriver中可以看到webdriver提供的元素定位方法。 目前提供的定位方式共8种:find_element_by_id()find_element_by_xpath()find_element_by_link_text()find_element_by_partial_...
  • 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式有8种 例如前端代码如下 1、By.name() 当我们要用name属性...
  • Python Selenium Webdriver 元素定位 ...2、自动化要做的就是迷你鼠标和键盘来操作这些元素,比如点击、输入等,操作这些元素,必须先找到它们,所以webdriver中提供了8种元素定位方法: find_element...
  • Webdriver提供了一系列的元素定位方法。 常用的有以下几: 1、id 2、name 3、class name 4、link text 5、partial link text 6、tag name 7、xpath 8、css selector 首先,我们先看看下面的这段HTML的代码,接...
  • Webdriver 中有八常见的定位元素方法: 1. By.id() 2. By.name() 3. By.tagName() 4. By.className() 5. By.linkText() 6. By.partialLinkText() 7. By.xpath() 8. By.cssSelector() 上面定位元素的...
  • webdriver 定位

    2016-07-06 10:46:00
    webdriver 提供了八种元素定位方法:1) id2) name3)class name4) tag name5)link text6) partial link text7) xpath8) css selector在Python 语言中对应的定位方法如下:find_element_by_id()find_element_...
  • Webdriver API之元素定位

    2017-03-03 18:26:00
    Webdriver提供了8种元素定位方法:id、name、class name、tag name、link text、partial link text、xpath、css selector 一、以上8种元素定位,Webdriver提供两套写法 1. 用By定位元素:通过By来声明定位的方法,...
  • 元素定位的方法总结 1、通过 id 定位元素 2、通过 class_name 定位元素 3、通过 tag_name 定位...8、通过 XPath 定位元素 9、通过 By 定位元素 以百度搜索输入框为例,具体说明各个定位方式的用法: ...
  • Webdriver APIWebdriver 定位元素8种方法id定位搜索框name定位class定位tag定位 Webdriver 定位元素8种方法 id定位:find_element_by_id() name定位:find_element_by_name() tag定位:find_element_by_tag_...
  • 本章将详细介绍元素定位的的8种方式和WebDriver常用方法(点击和输入、提交、获取一些内容)的使用。
  • WebDriver元素定位方法

    2016-02-23 16:45:00
    python语言中对应8种方法: id ---> name class name ---> tag name link text ---> partial link...
  • webdriver 提供了一系列的元素定位方法,常用的有一下8种方式: 1)id 2)name 3)class name 4)tag name 5)link text 通常用在超链接上 6)partial link text 通常用在超链...
  • 定位一组元素8种方法: # 定位一组元素 find_elements_by_id() find_elements_by_class_class() find_elements_by_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_...
  • 上一章已经可以浏览并打开百度 元素的操作方式 方法 说明 click ...清除元素内容 ...元素的查找方式8种方式: 元素 方法 优先级 id find_element_by_id() 高因为一个...
  • 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八,现分别介绍如下。 By.name() 假设我们要测试的页面源码如下:...
  • WebDriver提供的8种元素定位方法 1、id定位 – find_element_by_id() 2、name定位 – find_element_by_name() 3、tag定位 – find_element_by_tag_name() 4、class定位 – find_element_by_class_name() 5、link_...
  • Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素定位是基础,只有准去抓取到对应元素才能进行...WebDriver8种基本元素定位方式 find_element_by_id() 采用id属性进行定位。例如在百度页面中...
  • 4.1从定位元素开始 八元素定位的方法,及对比 1. id ---5.name (id唯一,name不唯一) 2. class name ---6.tag name (通过tag识别某个元素的概率很低) 3.link text ---7.partial link text 4.xpath ---8....
  •  在第二节里,我们就接触了webdriver中的8种基础定位方法,但是当我们在pycharm中打出:driver.find时,代码提示中其实是有18个被选项的,这次我们就来讲讲剩余这10种定位方法都是什么,以及它们之间存在的关系。...
  • webdriver提供了8种定位: 1、id定位:find_element_by_id(“id值”);id属性是唯一的 #获取浏览器驱动 driver = webdriver.Chrome() #通过id获取百度搜索框并清空 driver.find_element_by_id(“kw”).clear #通过id...
  • selenium_webdriver(python)元素定位详解

    千次阅读 2015-04-28 13:27:43
    webdriver 提供了一系列的对象定位方法,常用的有以下几  · id  · name  · class name  · link text  · partial link text  · tag name  · xpath  · css selector 由以下实例我们可以...
  • 1.WebDriver8种定位元素方法 id定位 find_element_by_id() name定位 find_element_by_name() tag定位 find_element_by_tag_name() class定位 find_element_by_class_name() link_...
  • 一、WebDriver API提供了8种元素定位方法: id name class name link text Xpath CSSselector tag name partial link text 定位Web页面上的元素可以通过元素区别于其他元素的一些属性:id,name,class name...
  • webDriver提供了8种用于定位元素方法 id定位(唯一)find_element_by_id(“kw”) name定位 find_element_by_name(“wd”) class name定位 find_element_by_class_name(“wd”) tag name 定位 find_element_by_tag...
  • Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素定位是基础,只有准去抓取到对应元素...WebDriver8种基本元素定位方式find_element_by_id()采用id属性进行定位。例如在百度页面中输入关键字 S...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

webdriver定位元素8种方法