4、Selenium的基本元素定位

(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()

猜你喜欢

转载自blog.csdn.net/qq969887453/article/details/88075833