selenium大全

本文介绍了Selenium库中八种定位方法,包括ID、名称、CSS选择器、XPath、类名、标签名、链接文本和部分链接文本,以及它们在实际测试中的应用。通过实例演示了如何使用这些方法进行元素操作和页面交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

taskkill /F /IM chromedriver.exe # kill 进程

# 打开浏览器

driver = webdriver.Chrome()

driver.get("https://baidu.com")

time.sleep(1)

# 1.xpath 绝对路径

# bd_input = driver.find_element_by_xpath("/html/body/div/div/div[5]/div/div/form/span[1]/input")

# 2.xpath 相对路径

# bd_input = driver.find_element_by_xpath("//form/span[1]/input")

# 3.xpath 相对路径取到多个的时候,利用中括号取对应的

# bd_input = driver.find_element_by_xpath("(//span/input)[1]").send_keys("666")

# 4.xpath 相对路径结合是否有某个属性

# bd_input = driver.find_element_by_xpath("//span/input[@maxlength]").send_keys("777")

# 5.xpath 相对路径结合属性和属性的值

# bd_input = driver.find_element_by_xpath("//span/input[@maxlength=\"255\"]").send_keys("888")

# 6.xpath 相对路径结合多个属性

# bd_input = driver.find_element_by_xpath("//span/input[@maxlength=\"255\" and @autocomplete]").send_keys("999")

# 7.xpath 相对路径结合模糊属性值

# bd_input = driver.find_element_by_xpath("//span/input[contains(@maxlength, '5')]").send_keys("101010")

# 8.xpath 根据元素的文本content定位

# bd_input = driver.find_element_by_xpath("//a[text()='关于百度']").click()

# 9.xpath 根据元素的模糊文本content定位

# bd_input = driver.find_element_by_xpath("//a[contains(text(), '于百')]").click()

# 10.xpath 同级、上级定位

# 根据百度输入框定位同级的百度一下按钮

"//*[@id='kw']/../../span[2]/input"

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/25 14:34

@Author : zero

"""

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

### selenium 八种定位

# 1.id

# 2.name

# 3.css_selector

# 4.xpath

# 5.class_name

# 6.tag_name

# 7.link_text

# 8.partial_link_text

# 1.id 2.name

# driver = webdriver.Chrome()

# driver.get("https://baidu.com")

# sleep(1)

# driver.find_element_by_name("wd").send_keys("python")

# driver.find_element_by_id("su").click()

# sleep(3)

# driver.quit()

# 3.css 4.xpath

# driver = webdriver.Chrome()

# driver.get("https://baidu.com")

# sleep(1)

# driver.find_element_by_css_selector("[name='wd']").send_keys("python")

# driver.find_element_by_xpath("//input[@value='百度一下']").click()

# sleep(3)

# driver.quit()

# 5.class_name类名 6.tag_name标签名

# driver = webdriver.Chrome()

# driver.get("https://baidu.com")

# sleep(1)

# driver.find_element_by_class_name("s_ipt").send_keys("python")

# driver.find_element_by_tag_name("form").submit() # 提交表单

# sleep(3)

# driver.quit()

# 7.link_text链接文本 8.partial_link_text模糊链接文本

# driver = webdriver.Chrome()

# driver.get("https://baidu.com")

# sleep(1)

# driver.find_element_by_link_text("关于百度").click()

# sleep(1)

# driver.find_element_by_partial_link_text("百度前必").click()

# sleep(2)

# driver.quit()

# 八种定位的复数形式(把所有符合条件的元素放入到一个列表并返回)

# driver = webdriver.Chrome()

# driver.get("https://baidu.com")

# sleep(1)

# eles_a = driver.find_elements_by_tag_name("a") # 找到页面所有的a标签 并返回一个列表

# print(len(eles_a))

# for ele in eles_a:

# try:

# print(ele.text)

# ele.click()

# except:

# print("这个人 不简单")

# driver.find_element_by_xxx() 还有一种写法

driver = webdriver.Chrome()

driver.get("https://baidu.com")

sleep(1)

# 输入内容

# driver.find_element_by_name("wd").send_keys("python")

driver.find_element(By.NAME, "wd").send_keys("python")

# 点击按钮

# driver.find_element_by_id("su").click()

driver.find_element(By.ID, "su").click()

sleep(3)

driver.quit()

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/25 15:54

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("https://baidu.com")

sleep(1)

# 窗口最大化

driver.maximize_window()

sleep(1)

# 网页全屏

# driver.fullscreen_window()

# sleep(1)

# 窗口最小化

# driver.minimize_window()

# sleep(1)

# 在当前窗口打开一个新的链接

driver.get("https://jd.com")

sleep(1)

# 返回上一页

driver.back()

sleep(1)

# 前进到下一页

driver.forward()

sleep(1)

# 刷新页面

driver.refresh()

sleep(1)

driver.quit()

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/25 16:07

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("https://baidu.com")

driver.maximize_window()

sleep(1)

driver.find_element_by_link_text("关于百度").click()

sleep(1)

# 获取当前窗口的标题

print(driver.title)

# 获取所有窗口句柄 driver.window_handles

# 切换窗口句柄 driver.switch_to.window()

driver.switch_to.window(driver.window_handles[1])

# driver.switch_to_window(driver.window_handles[1]) # 被划线方法即将被删除

print(driver.title)

driver.find_element_by_link_text("关于产品").click()

sleep(1)

driver.close()

driver.switch_to.window(driver.window_handles[0])

print(driver.title)

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/25 16:24

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("https://qzone.qq.com/")

driver.maximize_window()

sleep(1)

# 切换到iframe中

# 1.根据iframe的name切换

# driver.switch_to.frame("login_frame")

# 2.根据iframe索引切换 # 找网页中的iframe 从0开始

# driver.switch_to.frame(0)

# 3.根据给定的iframe元素切换

driver.switch_to.frame(driver.find_element_by_id("login_frame"))

driver.find_element_by_link_text("帐号密码登录").click()

sleep(2)

# 切出iframe

driver.switch_to.parent_frame() # 切换到上一级iframe

# driver.switch_to.default_content() # 切换到主iframe 就是最外层

driver.find_element_by_xpath("//span[text()='Android']").click()

sleep(3)

driver.quit()

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 09:16

@Author : zero

"""

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

driver = webdriver.Chrome()

driver.get("http://192.168.31.72/test.html")

driver.maximize_window()

sleep(1)

# 单选框

driver.find_element(By.XPATH, "//input[@value='gg']").click()

sleep(1)

# 复选框

driver.find_element(By.XPATH, "//input[contains(@onchange, '吃瓜子')]").click()

# 下拉列表的处理 select-option

from selenium.webdriver.support.select import Select

fruit = Select(driver.find_element(By.NAME, "fruit"))

# 下拉列表根据索引选中

fruit.select_by_index(2)

sleep(1)

# 下拉列表根据value选中

fruit.select_by_value("b")

sleep(1)

# 下拉列表根据可见文本选中

fruit.select_by_visible_text("俯卧撑")

sleep(3)

driver.quit()

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 09:44

@Author : zero

"""

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

driver = webdriver.Chrome()

driver.get("http://192.168.31.72/test.html")

driver.maximize_window()

sleep(1)

# 使用send_keys上传文件 <input type='file'>

driver.find_element(By.ID, "file").send_keys("C:/Users/zero/Desktop/test.jpg")

sleep(3)

driver.quit()

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 09:57

@Author : zero

"""

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

driver = webdriver.Chrome()

driver.get("https://baidu.com")

driver.maximize_window()

sleep(1)

# 输入内容

driver.find_element(By.NAME, "wd").send_keys("python")

sleep(1)

# 清空输入内容

driver.find_element(By.NAME, "wd").clear()

sleep(1)

# 再次输入

driver.find_element(By.NAME, "wd").send_keys("java")

sleep(1)

# 点击元素

# driver.find_element(By.ID, "su").click()

# sleep(3)

# 提交表单

driver.find_element(By.NAME, "wd").submit() # 对表单或者表单中的元素进行提交,都会提交这个表单

sleep(3)

# 获取元素的文本内容 <tag>text</tag>

# for a in driver.find_elements(By.TAG_NAME, "a"):

# try:

# print(a.text)

# except:

# pass

# # 获取元素的大小 {'height': 33, 'width': 101}

# print(driver.find_element(By.XPATH, "//img[@alt='到百度首页']").size)

#

# # 获取元素在页面上的坐标

# print(driver.find_element(By.XPATH, "//img[@alt='到百度首页']").location)

#

# # 获取元素的大小和坐标

# print(driver.find_element(By.XPATH, "//img[@alt='到百度首页']").rect)

# 元素中可以再次寻找元素

search_values = driver.find_element(By.ID, "content_left")

# search_values.find_element_by_xpath(".//div[7]/h3/a").click()

# 获取元素的属性

print(search_values.find_element_by_xpath(".//div[7]/h3/a").get_property("href"))

print(search_values.find_element_by_xpath(".//div[7]/h3/a").get_attribute("href"))

# http://192.168.31.72/test.html

driver.get("http://192.168.31.72/test.html")

sleep(1)

# 判断元素是否可操作

print(driver.find_element(By.XPATH, "//input[@value='我是你永远点不了的按钮']").is_enabled())

print(driver.find_element(By.XPATH, "//input[@value='测试单击']").is_enabled())

# 判断元素是否被选中

print(driver.find_element(By.XPATH, "//input[contains(@onchange, '吃花生')]").is_selected())

print(driver.find_element(By.XPATH, "//input[contains(@onchange, '吃瓜子')]").is_selected())

# 判断元素是否可见

print(driver.find_element(By.NAME, "fruit").is_displayed()) # 可见 True

print(driver.find_element(By.NAME, "fruit-none").is_displayed()) # 不可见 False

# print(driver.find_element(By.NAME, "fruit-666").is_displayed()) # HTML文档中根本没有,报错

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 11:25

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("https://baidu.com")

driver.maximize_window()

sleep(1)

# 页面截图 推荐使用.png格式

driver.save_screenshot("bd.png")

# 元素截图

driver.find_element_by_id("s_lg_img").screenshot("bd_logo.png")

# 获取元素截图的字节形式

# 手动实现

with open("bd_logo.png", "rb") as frb:

print(frb.read())

# webelement提供的方法

print(driver.find_element_by_id("s_lg_img").screenshot_as_png)

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 14:58

@Author : zero

"""

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from time import sleep

driver = webdriver.Chrome()

driver.get("http://192.168.31.72/test.html")

driver.maximize_window()

sleep(1)

driver.find_element_by_name("t2").send_keys("tester 666")

sleep(1)

driver.find_element_by_name("t2").send_keys(Keys.CONTROL + "a")

sleep(1)

driver.find_element_by_name("t2").send_keys(Keys.CONTROL + "x")

sleep(1)

driver.find_element_by_name("t2").send_keys(Keys.CONTROL + "v")

driver.find_element_by_name("t2").send_keys(Keys.CONTROL + "v")

driver.find_element_by_name("t2").send_keys(Keys.CONTROL + "v")

sleep(1)

driver.get("http://192.168.31.72/bbs")

driver.find_element_by_id("ls_username").send_keys("admin")

driver.find_element_by_id("ls_password").send_keys("123456" + Keys.ENTER)

sleep(1)

# driver.find_element_by_id("ls_password").send_keys(Keys.ENTER)

sleep(3)

driver.quit()

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 15:16

@Author : zero

"""

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

from time import sleep

driver = webdriver.Chrome()

driver.get("http://192.168.31.72/test.html")

driver.maximize_window()

sleep(1)

# 鼠标双击 double_click

ActionChains(driver)\

.double_click(driver.find_element_by_xpath("//input[@value='测试双击']"))\

.perform() # 只有执行完perform() 之后动作链才会真正的执行

sleep(1)

# 鼠标右击 context_click

ActionChains(driver)\

.context_click(driver.find_element_by_xpath("//input[@value='测试右击']"))\

.perform() # 只有执行完perform() 之后动作链才会真正的执行

sleep(2)

# 把动作串起来

ActionChains(driver)\

.double_click(driver.find_element_by_xpath("//input[@value='测试双击']"))\

.context_click(driver.find_element_by_xpath("//input[@value='测试右击']"))\

.perform()

sleep(2)

driver.get("http://192.168.31.72/t.html")

# 把一个元素拖到另外一个元素的位置上

ActionChains(driver).drag_and_drop(

source=driver.find_element_by_id("box"),

target=driver.find_element_by_id("box1")

).perform()

sleep(2)

driver.refresh()

sleep(1)

# 把元素以当前位置为起点,拖动到指定坐标

# ActionChains(driver).drag_and_drop_by_offset(

# source=driver.find_element_by_id("box"),

# xoffset=100,

# yoffset=100

# ).perform()

# 把上面的拖动实现成平滑缓慢拖动

# for i in range(10):

# ActionChains(driver).drag_and_drop_by_offset(

# source=driver.find_element_by_id("box"),

# xoffset=10,

# yoffset=10

# ).perform()

# sleep(0.1)

# 鼠标悬停

driver.get("https://baidu.com")

ActionChains(driver)\

.move_to_element(driver.find_element_by_link_text("更多"))\

.perform()

sleep(1)

# ActionChains().click_and_hold().perform() # 按住不放

# ActionChains().release().perform() # 松开

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 15:54

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("http://192.168.31.72/test.html")

driver.maximize_window()

sleep(1)

# 处理alert弹框

driver.find_element_by_xpath("//input[@value='点我测试alert弹框']").click()

sleep(1)

# driver.switch_to.alert.accept() # 确定

driver.switch_to.alert.dismiss() # 取消

sleep(1)

# 处理confirm弹框

driver.find_element_by_xpath("//input[@value='点我测试confirm弹框']").click()

sleep(1)

# driver.switch_to.alert.accept()

driver.switch_to.alert.dismiss()

sleep(1)

# 处理prompt弹框

driver.find_element_by_xpath("//input[@value='点我测试prompt弹框']").click()

sleep(1)

driver.switch_to.alert.send_keys("test666")

driver.switch_to.alert.accept()

# driver.switch_to.alert.dismiss()

sleep(1)

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 16:26

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("https://jd.com")

driver.maximize_window()

sleep(1)

# js代码:pageXOffset 获取页面x轴坐标

# js代码:pageYOffset 获取页面y轴坐标

# js代码:window.scrollTo(0, 1821); 滚动到页面指定的x, y坐标

# 执行js代码

driver.execute_script("window.scrollTo(0, 2371);")

sleep(3)

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 16:26

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("https://www.douyu.com/575522")

driver.maximize_window()

sleep(10)

# 把元素内的滚动条滚动到指定的x, y坐标

# js代码:document.querySelector("cssSelector").scrollTo(0, 100);

# 执行js代码

# driver.execute_script("document.querySelector(\".AnchorFriend-content>div>div\").scrollTo(0, 5 * 88);")

# sleep(3)

# 执行js代码并传递参数

# anchor_friend_pane = driver.find_element_by_css_selector(".AnchorFriend-content>div>div")

anchor_friend_pane = driver.find_element_by_xpath("//div[@class='AnchorFriend-content']/div/div")

driver.execute_script("arguments[0].scrollTo(0, 5 * 88);", anchor_friend_pane)

# driver.execute_script("console.log(arguments[0], arguments[1], arguments[2])", "a", "b", "c")

# -*- coding: utf-8 -*-

"""

@Time : 2021/5/26 17:22

@Author : zero

"""

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get("http://192.168.31.72/test.html")

driver.maximize_window()

sleep(1)

# 日期控件 使用js处理

ele_date = driver.find_element_by_name("t_date")

driver.execute_script("arguments[0].value=arguments[1];", ele_date, "2021-05-26")

sleep(1)

# 时间控件 使用js处理

ele_time = driver.find_element_by_name("t_time")

driver.execute_script("arguments[0].value=arguments[1];", ele_time, "17:24:59")

sleep(1)

ele_date = driver.find_element_by_name("t_date").send_keys("002021-05-26")

sleep(1)

ele_time = driver.find_element_by_name("t_time").send_keys("17:24")

sleep(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值