1. 元素定位的方法总结
(1)函数后面的小括号里都要加上双引号或者单引号,都可以。但是括号内还有引号时,最外面的就用双引号,里面的用单引号,避免混淆。
(2)首先选择css_selector方法,因为此方法定位效率高、速度快。name、id也较常用。
(3)所有方法都定位不了时,选择xpath。xpath定位,在页面元素有变动时,容易定位错误(比如层级变化),所以一般不选这种方式。
1.1 一般常用方法
driver.find_element_by_link_text(‘第一章’).click()
driver.find_element_by_partial_link_text(‘3-1 揭开自动化’).click()
driver.find_element_by_id(‘search-key’).click()
driver.find_element_by_name(‘Q’).click()
driver.find_element_by_class_name(‘btn-engine’).click()
driver.find_element_by_tag_name(‘ty’).click()
driver.find_element_by_xpath(‘/html/body/div/div[2]/form/div/div[2]/div/input[3]’).click()
总的原则就是保证选择定位的元素方式要能唯一标识。虽然id在一个html页面中有唯一性,但是当id不唯一时,不一定会报错。因此,定位时,一定要搜索一下,定位的标识是不是唯一的。
如果定位方式的标识不唯一,可以选用下面的方式。
注意:(1)find_elements_by…返回的是一个列表,所以后面要带列表的下标,标明是第几个位子。这个列表的序号是从1开始的,不是从0开始。(2)下标写在小括号的外面,不像XPATH定位一样写在里面。(XPath定位一般不会再用列表形式来标注)
driver.find_elements_by_link_text(‘第一章’)[1].click()
driver.find_elements_by_partial_link_text(‘3-1 揭开自动化’)[2].click()
driver.find_elements_by_id(‘search-key’)[1].click()
driver.find_elements_by_name(‘Q’)[3].click()
driver.find_elements_by_class_name(‘btn-engine’)[3].click()
driver.find_elements_by_tag_name(‘ty’)[4].click()
driver.find_elements_by_xpath(‘/html/body/div/div[2]/form/div/div[2]/div/input[3]’)[4].click()