Selenium→webdriver

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

#通过id定位
driver.find_element_by_id("kw").send_keys("测试逍遥子")

#通过name定位
driver.find_element_by_name("wd").send_keys("测试逍遥子")

#通过class定位
driver.find_element_by_class_name("s_ipt").send_keys("测试逍遥子")

#通过link_text定位
driver.find_element_by_link_text("新闻").click()
#链接文本只能针对超链接(a标签),span标签不可以

#通过partial_link_text定位
driver.find_element_by_partial_link_text("新").click()
#partial a.部分的

#通过tag_name(标签名)定位
#基本不用,很难唯一
print(driver.find_element_by_tag_name("form").get_attribute("name"))

-----------------------------------------------------------------------------------------

#通过xpath定位

#1 绝对路径:基本不用
driver.find_element_by_xpath("/html/body/div/div/div/div/div/form/span/input").send_keys("测试逍遥子")

#2 相对路径:两根斜杠//开头:找到唯一的form标签,向下定位
driver.find_element_by_xpath("//form/span[1]/input").send_keys("测试逍遥子")

#3 通过元素的索引定位
driver.find_element_by_xpath("//form/span[2]/input").click()

#4 通过元素(唯一)属性定位:最好用、用的最多
driver.find_element_by_xpath("//input[@autocomplete='off']").send_keys("测试逍遥子")
driver.find_element_by_xpath("//input[@autocomplete='off' and @name='wd']").send_keys("测试逍遥子")
#直接找input标签,用@呼叫每一个属性,(可以用and添加多个属性),里面值的双引号改为单引号
#当一个标签里的一个属性和别的标签的这个属性是相同的时,可以用两个或多个属性➕and来定位

#5 通过元素部分的属性值来定位
driver.find_element_by_xpath("//input[starts-with(@autocomplete,'of')]").send_keys("测试逍遥子")

#6 通过标签文本定位
driver.find_element_by_xpath("//span[text()='外交部召见欧盟驻华代表团团长']").click()
cl = driver.find_element_by_xpath("//span[text()='外交部召见欧盟驻华代表团团长']").get_attribute("class")
print(cl)

#7 各种xpath组合
driver.find_element_by_xpath("//span[contains(text(),'外')]").click()
driver.find_element_by_xpath("//form[@id='form']/span[1]/input[@id='kw']").send_keys("测试逍遥子")

#通配符*
*代表:所有的标签
//*[@id='kw'] → 所有的标签、所有的属性,只要值为'kw',即定位到

猜你喜欢

转载自blog.csdn.net/weixin_42067401/article/details/115127790