面试常见题
Selenium有几种定位方式?你最偏爱哪一种,为什么?
Selenium有八种定位方式:
与name有关的有三种:name、class_name、tag_name
与link相关的有两种:link_text、partitial_link_text
与id有关:id
全能选手:xpath、css_selector
如果存在id,我一定使用Id,因为简单方便,定位最快。其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位
如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。
1、返回值是单个元素
--通过id定位元素:find_element_by_id("id_vaule")
例:find_element_by_id("kw")
--通过name定位元素:find_element_by_name("name_vaule")
例:find_element_by_name("wd")
--通过tag_name定位元素:find_element_by_tag_name("tag_name_vaule")
例:find_element_by_tag_name("input")
--通过class_name定位元素:find_element_by_class_name("class_name")
例:find_element_by_class_name("s_ipt")
--通过css定位元素:find_element_by_css_selector()
例:find_element_by_css_selector("span.bg s_ipt_wr quickdelete-wrap>input.s_ipt")
find_element_by_css_selector("#kw")
--通过xpath定位元素:find_element_by_xpath("xpath")
例:find_element_by_xpath("//*[@id="kw"]")
--通过link:find_element_by_link_text("text_vaule")
例:find_element_by_partial_link_text("百度一下")
2、返回值是多个元素
--id复数定位find_elements_by_id(self, id_)
--name复数定位find_elements_by_name(self, name)
--class复数定位find_elements_by_class_name(self, name)
--tag复数定位find_elements_by_tag_name(self, name)
--link复数定位find_elements_by_link_text(self, text)
--partial_link复数定位find_elements_by_partial_link_text(self, link_text)
--xpath复数定位find_elements_by_xpath(self, xpath)
--css复数定位find_elements_by_css_selector(self, css_selector