selenium python bindings 元素定位

1. 辅助 Firepathcss

Firefox是全部作前端的必不可少的浏览器由于firebug的页面元素显示很清晰。用selenium 去定位元素的时候Firefox还有一个很是友好的工具就是firepath。下载firepath,点击页面元素选择firepath选项,就会给出一种找到元素的路径。前端

能够选择的方式有xPath、sizzleJS、css三种方法。python

a.sizzle没有用过,因为过于麻烦还refactor过一个job改掉sizzle的定位方式。浏览器

b.xPath确定会找到这个元素且没有遇到重复的现象,可是这个路径可能会过长。工具

c.css则会因前端页面的写法不一样而不必定能找到对应的。网站

因此这是个参考的方式,若是无明确的id或者class能够先用firepath 的xPath定位下而后化繁为简比较不容易出错。spa

 

定位的方式和写法不少,不一一都再举例子,参考下selenium python bindings的网站,而后找几个例子逆向推出若是能搞清楚对应的页面结构就完事儿了~给些示例供之后参考orm

 

2. xPathip

textArea_script = driver.find_element_by_xpath("//div[@class='CodeMirror']/div/textarea") element

textArea_script = driver.find_element_by_xpath("//*[@class='CodeMirror']/div/textarea")

textArea_script = driver.find_element_by_xpath("//textarea[contains(text(), 'text')]")

textArea_script = driver.find_element_by_xpath("//*[contains(text(), 'text')]")

这四种其实都能找到同一个元素

 

next = x("//input[@value = '下一步']")

edit_next = x("//input[@name = 'detail_subject_submit']")

 

3. class&id

最简单的定位方法,只须要知道class用. id用#的区别就能够了(依赖本身写的方法)~日常仍是用find_element_by_class/id 就能够

login_form = driver.find_element_by_id('loginForm')

content = driver.find_element_by_class('content')

 

4. 其余

还有不少关于Link text或者tag等等的定位方法,使用频度较低,必须使用的时候再找官网例子便可~

相关文章
相关标签/搜索