做了自动化测试这么久了,一直没有梳理到元素定位这一块的内容,其重要性不言而喻。趁着周末有时间,梳理一下。
1,通过id定位
driver.find_element_by_css_selector("#kw").clear()
driver.find_element_by_css_selector("#kw").send_keys("selenium")
2,通过class定位
driver.find_element_by_css_selector("input.bg").click()
其中class的值之间有空格时,只需要在空格中间加个点号就可以。
如:
driver.find_element_by_css_selector("div.clearfix.oe_login_buttons“)。click()
3,通过属性定位
driver.find_element_by_css_selector("[placeholder=‘请输入密码‘]").clear()
4,通过元素的层级定位
driver.find_element_by_css_selector("div.clearfix.oe_login_buttons>button.btn.btn-primary").click()
工作中经常用的定位方法是通过儿子找父亲,再找父亲的兄弟。不知道CSS能不能实现。后续再补充与更新。反正XPATH是可以实现的。
最后上一段完整的代码吧。
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(20)
driver.get("http://www.***************")
driver.find_element_by_css_selector("[name=‘login‘]").clear()
driver.find_element_by_css_selector("[name=‘login‘]").send_keys(u"大猩猩")
driver.find_element_by_css_selector("[placeholder=‘请输入密码‘]").clear()
driver.find_element_by_css_selector("[placeholder=‘请输入密码‘]").send_keys("13*********")
driver.find_element_by_css_selector("div.clearfix.oe_login_buttons>button.btn.btn-primary").click()
time.sleep(3)
driver.quit()