一、XPath定位
XPath是一种用于选取XML文档中某些部分的语言。XPath通常用于在XML文档中搜索内容,或从XML文档中提取信息。在定位HTML元素时,XPath定位使用的是元素的属性和标签名。
from selenium import webdriver # 创建浏览器对象 browser = webdriver.Chrome() # 打开页面 browser.get('http://www.baidu.com') # 根据元素的class属性定位 input_ele = browser.find_element_by_xpath('//input[@class="s_ipt"]') # 根据元素的属性值定位,id="su" search_btn = browser.find_element_by_xpath('//*[@id="su"]')
在以上示例代码中,我们主要是通过元素的class属性和id属性来定位元素。例如,我们通过find_element_by_xpath('//input[@class="s_ipt"]')来查找元素,其中 [@class="s_ipt"]表示class属性为s_ipt的元素。
二、XPath定位label元素
在一些表单提交场景中,我们需要先定位到该表单的label标签,再通过for属性和表单元素的id属性进行绑定,以便在页面上点击label标签时可自动选中相应的表单输入框。
from selenium import webdriver # 创建浏览器对象 browser = webdriver.Chrome() # 打开页面 browser.get('http://www.baidu.com') # 根据label里的文字找到对应的input输入框 input_ele = browser.find_element_by_xpath('//label[contains(text(),"贴吧")]//following-sibling::input')
在以上示例代码中,我们通过contains函数匹配label标签中包含“贴吧”文字的元素,再通过//following-sibling::input找到该label标签后的input标签元素。
三、XPath定位img元素
在网页中,如果需要定位img标签元素,可以使用以下示例中的方法定位img元素。
from selenium import webdriver # 创建浏览器对象 browser = webdriver.Chrome() # 打开页面 browser.get('http://www.taobao.com') # 根据元素的标签名和属性值定位, img_ele = browser.find_element_by_xpath('//img[@alt="超值惠选"]')
在以上示例代码中,我们通过查找alt属性为“超值惠选”的img标签元素。
四、XPath定位是什么
XPath定位是一种用于选取XML文档中某些部分的语言,在定位HTML元素时,XPath使用的是元素的属性和标签名。XPath可以根据不同的情况选用不同的方法来定位元素,如根据标签名、class、id、属性值等进行定位。
五、XPath和CSS定位选取
在定位网页元素时,开发人员可以使用CSS和XPath两种语言进行选取。两种语言各有优缺点,使用时需视情况而定。对于开发人员来说,使用CSS定位更简单,而且在执行速度上也稍微快一些。
from selenium import webdriver # 创建浏览器对象 browser = webdriver.Chrome() # 打开页面 browser.get('http://www.baidu.com') # 根据元素的class属性定位 input_ele = browser.find_element_by_css_selector('.s_ipt') # 根据标签名和属性值定位 search_btn = browser.find_element_by_css_selector('input[id="su"]')
在以上示例代码中我们通过.find_element_by_css_selector方法来定位元素,并且我们发现通过CSS定位元素更简单。例如,我们可以直接使用.find_element_by_css_selector('.s_ipt')来根据class属性定位元素,而无需使用XPath语言的类选择器(.//input[@class="s_ipt"])。