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)