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等等的定位方法,使用频度较低,必须使用的时候再找官网例子便可~