赞
踩
定位<p>标签和<a>标签中的文本元素,最佳的定位方式是使用XPath的text()方法:
- # 完整文本定位
- driver.find_element(By.XPath,"//*[(text(),'你想要定位的文本')]")
-
- # 部分文本定位
- driver.find_element(By.XPath,"//*[contains(text(),'你想要定位的文本')]")
-
- # 以……开头的文本
- driver.find_element(By.XPath,"//*[starts-with(text(),'你想要定位的文本')]")
注意: text不是属性,无需使用@修饰。
id:通过id属性定位,id通常是唯一的。
element = driver.find_element_by_id("element_id")
name:通过name属性定位,如果页面上有多个元素具有相同的name,则返回第一个。
element = driver.find_element_by_name("element_name")
class_name:通过class_name属性定位,如果页面上有多个元素具有相同的class_name,则返回第一个。
element = driver.find_element_by_class_name("class_name")
tag_name:通过标签名称定位,如 <input>
, <div>
, <button>
等。
element = driver.find_element_by_tag_name("tag_name")
link_text:通过超链接的完整文本定位,即<a>
标签。
element = driver.find_element_by_link_text("link_text")
partial_link_text:通过超链接的部分文本定位。
element = driver.find_element_by_partial_link_text("partial_link_text")
element = driver.find_element_by_xpath("//tag[@attribute='value']")
//:代表相对路径,例如“//p”,意思是选择文档中的<p>元素,无论它们位于文档的什么位置。
/:与//相反,代表的是绝对路径,例如/html/body/div/p,意思是选择HTML文档中body标签下的第一个<div>元素中的所有<p>元素。绝对路径很脆弱,任意页面结构的变动都会导致找不到元素。
tag:可以是具体的标签名,也可以用*代替,即选择文档中的所有元素。
attribute:代表的是属性,属性前面需要用@来修饰,例如//input[@id='submit']。
CSS Selector:
element = driver.find_element_by_css_selector("css_selector")
通过id定位:使用“#”加上元素的ID值。例如id=submit,那么括号内的css_selector = "#submit"。
通过class_name定位:使用“.”加上元素的class_name值。例如class_name=myClass,那么括号内的css_selector = ".myClass"。
通过标签名定位:直接使用HTML标签名。例如tag_name=div,那么括号内的css_selector = "div"。
属性精确匹配选择器:[attribute='value']。例如:id='submit',那么括号内的css_selector = [id='submit'],即选择所有id等于submit的元素。
属性包含选择器:[attribute*='value']。例如:id='qqsubmit',那么括号内的css_selector = [id*='submit'],即选择所有id中包含submit的元素。
属性前缀选择器:[attribute^='value']。例如:id^='submitqq',那么括号内的css_selector = [id^='submitqq'],即选择所有id中以submit开头的元素。
属性后缀选择器:[attribute$='value']。例如:id$='submitqq',那么括号内的css_selector = [id$='qqwwsubmit'],即选择所有id中以submit结尾的元素。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。