# 百度自动登录
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
class Testcode:
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('https://www.baidu.com/')
self.driver.maximize_window()
# id定位(唯一)
def test_id(self):
self.driver.find_element(By.ID, "kw").send_keys("selenium")
sleep(1.5)
self.driver.find_element(By.ID, "su").click()
sleep(1000)
# copy——copy full XPATH(路径定位)
def test_xpath(self):
self.driver.find_element(By.XPATH, "/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input").send_keys("selenium")
sleep(1.5)
self.driver.find_element(By.XPATH, "/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input").click()
sleep(1000)
# 超链接文本定位
def test_link_test(self):
self.driver.find_element(By.ID, "kw").send_keys("selenium")
sleep(1.5)
self.driver.find_element(By.ID, "su").click()
sleep(2)
# <a>百度首页</a>
self.driver.find_element(By.LINK_TEXT, "百度首页").click()
sleep(1000)
# 超链接部分文本定位
def test_partial_link_test(self):
self.driver.find_element(By.ID, "kw").send_keys("selenium")
sleep(1.5)
self.driver.find_element(By.ID, "su").click()
sleep(2)
# <a>首页</a>
self.driver.find_element(By.PARTIAL_LINK_TEXT, "首页").click()
sleep(1000)
# name标签名定位 可能返回多个元素,查找时返回第一个
def test_name(self):
# self.driver.find_elements(By.NAME,"wd") 返回一个集合
self.driver.find_element(By.NAME, "wd").send_keys("selenium")
sleep(1.5)
self.driver.find_element(By.ID, "su").click()
sleep(1000)
# 标签名称定位(无法准确定位)
def test_tag_name(self):
print(self.driver.find_element(By.TAG_NAME, "input"))
sleep(1000)
# css选择器定位 copy——copy seletor
def test_css(self):
self.driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("selenium")
sleep(1000)
# class_name定位
def test_class(self):
self.driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("selenium")
sleep(1.5)
self.driver.find_element(By.ID, "su").click()
sleep(1000)
if __name__ == "__main__":
test = Testcode()
# test.test_id()
# test.test_Xpath()
# test.test_link_test()
# test.test_partial_link_test()
# test.test_name()
# test.test_Tag_name()
# test.test_css()
# test.test_class()
为了简化搜索元素的过程,可以写一个通用的工具,如下,
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
class Box:
def __init__(self, url): # 获得要测试的链接
self.driver = webdriver.Chrome()
self.driver.get(url)
self.driver.maximize_window()
sleep(1)
def get_element(self, *loc): # 搜索元素
e = self.driver.find_element(*loc)
return e
if __name__ == "__main__":
url_ = input("请输入要测试的链接") # 下列操作以登录百度为例
t = Box(url_)
t.get_element(By.ID,"kw").send_keys("selenium")
t.get_element(By.ID,"su").click()
sleep(1000)
细节参考哔哩哔哩:07丨实现元素定位:掌握Selenium八大定位方法_哔哩哔哩_bilibili
小白的自学笔记,有理解错误的地方欢迎各位大佬指正 。