(1)根据id、name进行定位
还是通过百度页面来进行学习,这里我是打开Chrome浏览器按下F12,进入到前端调试页面,查看界面元素。可以看到文本框的id是kw,name是wd。搜索按钮的id是su,没有name属性
代码如下:
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 根据name进行页面元素定位
driver.find_element_by_name("wd").send_keys(u"根据id进行定位")
# 根据id进行页面元素定位
driver.find_element_by_id("su").click()
time.sleep(3)
driver.close()
(2)根据classname定位
a、还是以百度搜索页面来进行学习,看下图,文本框的classname是“s_ipt”,搜索按钮的classname是“bg s_btn”
代码如下:
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 根据name进行页面元素定位
driver.find_element_by_class_name("s_ipt").send_keys(u"根据classname来进行定位")
# 根据id进行页面元素定位
driver.find_element_by_class_name("s_btn").click()
time.sleep(3)
driver.close()
注:这里需要说明一下,为什么我们在页面看到的百度一下按钮的classname明明是“bg s_btn”为什么要在代码里面写成s_btn。class = “bg s_btn” 这里的空格表示的不是空字符串,那是间隔符号,表示一个元素有多个class的属性名称。
例如:classname = col3 fcweak ft12 tal
#其中仅 tal唯一
# 方法一:取单个class属性(如果属性唯一)
Element=driver.find_element_by_class_name("tal")
# 方法二:定位一组取下标定位(乃下策)
Element=driver.find_elements_by_class_name("fcweak ")[0]
Element=driver.find_elements_by_class_name("ft12 ")[3]
3、根据tagname进行定位
说明一下,其实tagname其实就是页面元素标签的类型,比如途中的input就属于tagname,一个页面的这样的标签存在有多个一般使用这种定位方式就很不便
代码如下:
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys(u"根据tagname定位")
# 根据tagname定位
webElements = driver.find_elements_by_tag_name("input")
for webElement in webElements:
if webElement.text == u"百度一下":
webElement.click()
time.sleep(3)
driver.close()
4、根据LinkText定位
代码如下:
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 根据linktext 进行定位
driver.find_element_by_link_text("hao123").click()
time.sleep(3)
driver.close()
5、根据partiallinktext定位
其实partiallinktext其实就是取得linktext得一部分
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.taobao.com")
driver.find_element_by_partial_link_text(u"新款").click()
time.sleep(3)
driver.close()
6、根据Xpath定位
代码如下:
(注:复制xpath时需要注意引号)
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//*[@id='kw']").send_keys(u"根据xpath定位")
driver.find_element_by_xpath("//*[@id='su']").click()
time.sleep(3)
driver.close()
7、根据css定位
代码如下:
(注:这里class为什么是s_btn上面已经有说明)
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# css通过id定位
driver.find_element_by_css_selector("#kw").send_keys(u"css通过id定位")
# css通过class定位
driver.find_element_by_css_selector(".s_btn").click()
time.sleep(3)
driver.close()