#对页面的控件进行操作-元素定位 # bs.find_element_by_id(id属性值) 优点:准确度定位高 不足:多数的标签都没有id属性 #链接标签的文本 bs.find_element_by_link_text('链接标签的文本内容') 优点:适合代文本的超级链接,同时没有id、、name的属性 不足:不同的超级链接文本可能重复相同,准确度不高 #标签的name属性
bs.find_element_by_name('wd').send_keys('新梦想') 优点:适合有name属性的标签 不足:不同标签的name属性可能相同,而且很多标签开发不会带name属性 #链接标签的文本中的部分值 bs.find_element_by_partial_link_text('百度').click()#查找包含百度的第一个 find_element_by_partial_link_text('链接标签的文本内容') print(len(bs.find_elements_by_partial_link_text('百度'))) find_elements_by_partial_link_text('链接标签的文本内容')找多个链接 like ‘%链接标签的文本内容%’ #通过tag_name(标签名)定位元素: bs.find_element_by_tag_name('body') find_element_by_tag_name('标签名') 不足:tag_name应该是所有定位方式中最不靠谱的一种,因为在一个页面上相同tag_name的元素极其容易出现
元素定位:是用唯一性做定位 解决此问题: #xpath find_element_by_xpath(‘路径’) 1. 元素所在的路径 优点:无任何属性的标签,能够准确定位 缺点:不稳定,一旦修改了路径,定位无效 绝对路径/ 例子:找百度热搜 html/body/div/div/div/div/div/div/div/a/div#百度热搜的绝对路径 bs.find_element_by_xpath('html/body/div/div/div/div/div/div/div/a/div').click()#百度热搜 找新闻 html/body/div/div/div/a 该元素不可交互 如果路径不唯一,可以在路径中明确元素的索引 bs.find_element_by_xpath('html/body/div/div/div[3]/a').click()#百度新闻 相对路径// bs.find_element_by_xpath('//div[3]/a').click()#百度新闻 /html/body/div[1]/div[1]/div[7]/div/p[4]/a //*[@id="bottom_layer"]/div/p[4]/a 2. 带条件 <input id=’i1’ name=’xx’ class=’’> (相对/绝对路径)/标签名[@属性名=‘属性值’ like where 字段名=数据值 例子://*[@id="bottom_layer"]/div/p[4]/a ‘//div[@class="title-text c-font-medium c-color-t"]’#百度热搜 bs.find_element_by_xpath('//div[@class="title-text c-font-medium c-color-t"]').click() (相对/绝对路径)/标签名[@属性名=‘属性值’ and/or @属性名2=‘属性值’....] bs.find_element_by_xpath('//input[@id="kw" and class="s_ipt"]').click()
|