selenium2学习:浏览器操作:元素定位

如百度搜索框:

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

百度新闻链接:

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

1.1.1      普通定位

id:find_element_by_id(“kw”)

name: find_element_by_name(“wd”)

class:find_element_by_class_name(“s_ipt”)

tag:find_element_by_tag_name(“input”)(同按钮一样,一般不用)

link:find_element_by_link_text(“新闻”)

partial link:find_element_by_ partial_link_text(“闻”)(取文本链接中的一部分内容)

1.1.2      Xpath定位

1.1.2.1       绝对路径

从/html至input。

1.1.2.2       元素属性

复制xpath://*[@id="kw"]

find_element_by_xpath(” //*[@id="kw"]”)

find_element_by_xpath(” //input[@id="kw"]”)

注:xpath中的属性也可以用name、class、进行定位。

1.1.2.3       父级属性

如果需定位的元素没有属性值,则可通过起上级或更上级属性找到它。

find_element_by_xpath(” //span[@class="bg_s_ipt_wr"]/input”)

1.1.2.4       逻辑运算符

多个元素的多个属性不唯一,无法通过一个属性定位一个元素,则可通过多个属性定位。

find_element_by_xpath(” //input[@id=’kw’ and @class=’su’] /span/input”)

1.1.3      css定位

详见W3CSschool网站。

CSS路径复制方法:chrome:F12,copy——copy selector

如百度搜索框

<span class="bg s_ipt_wr quickdelete-wrap">

<span class="soutu-btn"></span>

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

<a href="javascript:;" id="quickdelete" title="清空" class="quickdelete" style="top: 0px; right: 0px; display: none;">

</a>

</span>

1.1.3.1       Class:.

class:find_element_by_css_selector(“.s_ipt"”)

.表示通过class属性定位元素。

1.1.3.2       Id:#

id:find_element_by_css_selector("#kw")

#表示通过id属性定位元素。

1.1.3.3       标签名

标签名:find_element_by_css_selector("input") (重复性高,定位准确性低)

1.1.3.3.1     父子关系定位

find_element_by_css_selector("span>input")

1.1.3.3.2     属性定位

find_element_by_css_selector(“[name=’kw’]”)

find_element_by_css_selector(“[autocomplete=off]”)

find_element_by_css_selector(‘[type=”submit”]’)

1.1.3.3.3     组合定位

find_element_by_css_selector(“form.fm>span>input.s_ipt”)(父子关系&class)find_element_by_css_selector(“form.fm>span>input#kw”) (父子关系&id)

1.1.4      Xpath和CSS定位对比

目标

XPath

CSS 3

所有元素

//*

*

所有的P元素

//p

p

所有的p元素的子元素

//p/*

p > *

根据ID获取元素

//*[@id='foo']

#foo

根据Class获取元素

//*[contains(@class,'foo')] 1

.foo                               

拥有某个属性的元素

//*[@title]

*[title]

所有P元素的第一个子元素

//p/*[0]

p > *:first-child

所有拥有子元素a的P元素

//p[a]

无法实现

下一个兄弟元素

//p/following-sibling::*[0]

p + *


id:find_element(By.ID,“kw”)
1.1.5      By定位

  • name: find_element(By.NAME,“wd”)
  • class:find_element(By.CLASS_NAME,“s_ipt”)
  • tag:find_element(By.TAG_NAME,“input”)(同按钮一样,一般不用)
  • link:find_element(By.LINK_TEXT_text,“新闻”)
  • partial link:find_element(By. PARTIAL_LINK_TEXT,“闻”)(取文本链接中的一部分内容)
  • Xpath:find_element(By.XPATH,“//*[@id=’kw’]”)
  • CSS:find_element(By.CSS,” #kw”)

注:试用By之前需要将By引入:

from selenium.webdriver.common.by import By

猜你喜欢

转载自www.cnblogs.com/jxba/p/8993517.html