第四节:元素定位方法

xiaoxiao2021-02-28  96

webdriver 提供的find_element_by_*的八种元素定位方法:

方法一:通过id定位

语法:find_element_by_id() 

举例:find_element_by_id("kw")

方法二:通过name定位

语法:find_element_by_name()

举例:find_element_by_name("wd")

方法三:通过class name定位

语法:find_element_by_class_name() 

举例:find_element_by_class_name("s_ipt")

方法四:通过tag name定位

语法:find_element_by_tag_name()

举例:find_element_by_tag_name("input") 

方法五:通过link text定位

语法:find_element_by_partial_link_text()

举例:find_element_by_link_text("新闻")

说明:在执行中文的地方出现在乱码,可以在中文件字符串的前面 加个小“u”可以有效的避免乱码的问题,加 的作用是把中文字符串转换中 unicode 编码,如: find_element_by_link_text(u"新闻") 

方法六:通过parial link 定位 

语法:find_element_by_partial_link_text( )

举例:

<a class="mnav" name="tj_lang" href="#">一个很长很长的文本链接</a> 

find_element_by_partial_link_text("一个很长的") find_element_by_partial_link_text("文本链接")

方法七:通过XPATH定位

举例:找到百度输入框和搜索按钮 A:绝对路径定位:[用标签名的层级关系来定位元素的绝对路径 ]

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

find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input") ------>说明:div[2]表示第二个 div 标签

B:利用元素属性定位:

find_element_by_xpath("//input[@id='kw']") ------》说明://表示当前页面某个目录下,input 表示定位元素的标签名,[@id='kw'] 表示这个元素的 id 属性值等于kw find_element_by_xpath("//input[@id='su']") find_element_by_xpath("//input[@id='wd']") find_element_by_xpath("//input[@class='s_ipt']") find_element_by_xpath("//*[@class='bg s_btn']") -----》不想指定标签名也可以用星号(*)代替 说明:使用 XPath 不仅仅只局限在 idname class 这三个属性值,元素的任意属性值都可以使用,只要它能唯一的标识一个元素 

find_element_by_xpath("//input[@maxlength='100']") find_element_by_xpath("//input[@autocomplete='off']") find_element_by_xpath("//input[@type='submit']") C:层级与属性结合 -----》适用于本身没有可利用的属性值,我们可利用他的上一级属性值

find_element_by_xpath("//span[@class='bg s_ipt_wr']/input") 

说明:通过 class 属性定位到是父元素,后面/input 也就表示父元素下面标签名为input 的子元素。如果父元素没有可利用的属性值,那么可以继续向上查找“爷爷”元素。 

D:使用逻辑运算符 ---》如果一个属性不能唯一的区分一个元素,我们还可以使用逻辑运算符连接多个属性来区别于其它属性。

<input id="kw" class="su" name="ie"> <input id="kw" class="aa" name="ie"> <input id="bb" class="su" name="ie"> 如果要找到第一个元素:方法为:find_element_by_xpath("//input[@id='kw' and @class='su']/span/input") 

---------------------------------说明:可以通过firebug复制XPATH----------------------------------------------------------------------------------------------------------------

方法八:通过CSS 定位 CSS定位,一般情况下定位速度要比 XPath CSS 选择器的常见语法:

选择器 例子 描述.class .intro class 选择器,选择 class="intro"的所有元素#id #firstname id 选择器,选择所有 id="firstname"所有元素* * 选择所有元素element p 元素所有<p>元素element > element div > input 选择父元素为 <div> 元素的所有 <input> 元素element + element div + input 选择紧接在 <div> 元素之后的所有 <p> 元素。[attribute=value] [target=_blank] 选择 target="_blank" 的所有元素。 举例:

<span class="bg s_ipt_wr"> <input id="kw" class="s_ipt" autocomplete="off" maxlength="100" value="" name="wd"> </span> <span class="bg s_btn_wr"> <input id="su" class="bg s_btn" type="submit" value="百度一下"> </span> A:通过 class 属性定位 (点号(.)表示通过 class 属性来定位元素 ) find_element_by_css_selector(".s_ipt") ----》定位到输入框

B:通过 id 属性定位 (井号(#)表示通过 id 属性来定位元素 )

find_element_by_css_selector("#kw") ----》定位到输入框

C:通过标签名定位: [通过这种方式很难唯一的标识一个元素 ]

find_element_by_css_selector("input") 

D:通过父子关系定位: find_element_by_css_selector("span>input") E:通过属性定位: find_element_by_css_selector("input[autocomplete='off']") F:组合定位:

find_element_by_css_selector("span.bg s_ipt_wr>input.s_ipt") 说明:它的标签名叫 span,它有一个 class 属性值叫 bg s_ipt_wr,它有一个子元素,标签名 叫 input,并且这个子元素的 class 属性值叫 s_ipt ----------------------------说明:可以使用 Firebug 工具帮助我们生成 CSS 语法。通过 Firebug 定位元素,在元素上右键点击选择“复制 CSS ------------

webdriver提供的用 By 定位元素 find_element(By.ID,"kw") find_element(By.NAME,"wd") find_element(By.CLASS_NAME,"s_ipt") find_element(By.TAG_NAME,"input") find_element(By.LINK_TEXT,u"新闻") find_element(By.PARTIAL_LINK_TEXT,u"") find_element(By.XPATH,"//*[@class='bg s_btn']") find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su") find_element()方法只用于定位元素。它需要两个参数,第一个参数是定位方式,这个由 By 提供;另第二个参数是定位的值。

说明:在使用 By 时需要将 By 类导入。from selenium.webdriver.common.by import By

转载请注明原文地址: https://www.6miu.com/read-44853.html

最新回复(0)