selenium定位元素的八大方法:

在开始登录前,咱们得先学习一下selenium定位元素的方法,不然找不到元素是没办法完成自动操作

百度

python工程狮

find_element_by_id()
element是要素的意思,这个方法整句翻译过来的意思就是:通过id属性来查找元素
driver.find_element_by_id('test')
#我们对比上面的html代码可以知道,id属性为‘test’的只有一个代码块,就是



find_element_by_name()

通过name属性来查找元素

test = driver.find_element_by_name('python') #找到name属性为‘python’的p标签
print(test.text) #结合text方法,输出:python工程狮
find_element_by_class_name()

通过class的属性名来查找元素

driver.find_element_by_class_name('article') #查找class的属性名为‘article’的元素

find_element_by_tag_name()

通过标签名来查找元素

driver.find_element_by_tag_name('a') #查找‘a’标签

find_element_by_link_text()

通过链接的文本来查找元素

a = driver.find_element_by_link_text('百度') #查找链接文本为‘百度’的元素

link = a['href'] #获取该元素的链接

find_element_by_partial_link_text()

通过链接的部分文本来查找元素

a = driver.find_element_by_link_text('度') #查找链接的部分文本为‘度’的元素

link = a['href'] #获取该元素的链接

find_element_by_xpath()

xpath是XML路径语言,通过元素的路径来查找元素

driver.find_element_by_link_text(//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input)

可直接右键选中需要查找的元素,选择copy xpath即可复制到该元素的绝对路径


更多find_element_by_xpath()使用介绍可以自行百度了解

find_element_by_css_selector()

通过CSS属性来查找元素

driver.find_element_by_css_selector("input[id="loginname"]")
selenium定位复数方法:
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

使用方法与上面介绍的方法一样,只是在element后加了s,是element的复数形式,可以查找满足条件的所有元素。

自动登录微博

咱们先来定位微博登录的相关元素位置

用户名输入框


用户名输入框

密码输入框


密码输入框

登录按钮


登录按钮

from selenium import webdriver
import time
# 打开Chrome 浏览器
browser = webdriver.Chrome()
# 打开微博网页
browser.get('https://weibo.com')
#微博加载比较慢,我们给它设置15s的打开时间,然后关闭浏览器
time.sleep(15)
#查找微博用户名输入框
user_name = browser.find_element_by_css_selector("#loginname")
#查找id = 'loginname'的元素
#将用户名发送到用户名输入框
user_name.send_keys("你的用户名")
#send_keys()方法,用于模拟键盘输入
#查找微博密码输入框
pass_word = browser.find_element_by_css_selector(".info_list.password input[node-type='password']")
#查找父元素为calss = 'info_list password'的子元素为node-type='password'的input标签
#将密码发送到密码输入框
pass_word.send_keys("你的密码")
#查找微博登录按钮
register = browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']")
#查找父元素为calss = 'info_list login_btn' 的子元素node-type='submitBtn'的a标签
#模拟鼠标点击登录
register.click()
#click()方法,用于模拟鼠标点击元素
time.sleep(20)
# 关闭浏览器
browser.quit()


输出结果预览