💬获取验证信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 14:40

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")
driver.maximize_window()
time.sleep(2)

# 获取网站标题
title = driver.title
print(title)

driver.find_element_by_link_text("联系客服").click()
# 获取当前页面的网址并打印
url = driver.current_url
print(url)

driver.quit()
🖥控制浏览器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 14:46

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")
driver.maximize_window()
time.sleep(3)
driver.find_element_by_link_text("9.9抢大牌").click()
time.sleep(3)

# 刷新
driver.refresh()
time.sleep(3)

# 回退
driver.back()
time.sleep(3)

# 前进
driver.forward()
time.sleep(3)

driver.quit()
🖼设置浏览器尺寸
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 14:51

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")
time.sleep(3)
# 窗口最大化
driver.maximize_window()
time.sleep(3)
# 设置浏览器的宽600和高800
driver.set_window_size(600, 800)
time.sleep(3)

driver.quit()
🉑动作方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 14:55

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")
time.sleep(3)
# 窗口最大化
driver.maximize_window()

# 输入文本信息
# 搜索框输入 男鞋
driver.find_element_by_xpath("//form/input[1]").send_keys("男鞋")
time.sleep(2)

# 清除文本信息
# 清空搜索框中的文本信息
driver.find_element_by_xpath("//form/input[1]").clear()
time.sleep(2)

# 点击事件
# 点击秒杀
driver.find_element_by_xpath("//div[@class='nav_pub']/a[2]").click()
time.sleep(3)

driver.quit()
多种属性获取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 15:03

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")
time.sleep(3)
# 窗口最大化
driver.maximize_window()

# 获取控件的尺寸
size = driver.find_element_by_xpath("//input[@class='but1']").size
print(type(size))
print("搜索框的高是:", size['height'])
print("搜索框的宽是:", size["width"])

# 获取控件上的文本信息
text = driver.find_element_by_xpath("//div[@class='schhot']/a[2]").text
print("获取控件上的文本信息:", text)

# 获取控件的属性值
href = driver.find_element_by_xpath("//div[@class='schhot']/a[2]").get_attribute('href')
print(href)

# 判断控件是否在页面中显示出来
dis = driver.find_element_by_xpath("//div[@class='schhot']/a[2]").is_displayed()
if dis == True:
print("家装节按钮加载出来了!")
driver.find_element_by_xpath("//div[@class='schhot']/a[2]").click()
time.sleep(2)
else:
time.sleep(5)
driver.find_element_by_xpath("//div[@class='schhot']/a[2]").click()
time.sleep(2)

# 清空文本框中的内容
driver.find_element_by_xpath("//input[@class='but1']").clear()
time.sleep(2)

# 在输入框输入文本信息,判断回显信息是否与输入一致
driver.find_element_by_xpath("//input[@class='but1']").send_keys("test")
time.sleep(2)
value = driver.find_element_by_xpath("//input[@class='but1']").get_attribute("value")
if value == "test":
print("输入信息是test")
else:
print("输入信息不是test")

time.sleep(3)
driver.quit()
🐭鼠标事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 15:38

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")
time.sleep(2)
# 窗口最大化
driver.maximize_window()

ele = driver.find_element_by_link_text("母婴玩具")
time.sleep(3)

# 把鼠标移动到某一个控件上 .perform()使动作生效
ActionChains(driver).move_to_element(ele).perform()
time.sleep(3)

driver.find_element_by_link_text("营养辅食").click()
time.sleep(3)

# # 右击
# ActionChains(driver).context_click(ele).perform()
#
# # 双击
# ActionChains(driver).double_click(ele).perform()

# # 拖动控件
# source = driver.find_element_by_link_text("")
# target = driver.find_element_by_link_text("")
# ActionChains(driver).drag_and_drop(source, target)

# # 偏移
# ActionChains(driver).drag_and_drop_by_offset(source, 100, 0)

driver.quit()
⌨️键盘事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 15:57

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://[服务器ip]/yuns/index.php")

driver.find_element_by_xpath("//input[@class='but1']").send_keys("阿迪达斯斯")
time.sleep(2)

# 删除一个字符
driver.find_element_by_xpath("//input[@class='but1']").send_keys(Keys.BACK_SPACE)
time.sleep(2)

# 输入空格
driver.find_element_by_xpath("//input[@class='but1']").send_keys(Keys.SPACE)
time.sleep(2)

# 输入耐克
driver.find_element_by_xpath("//input[@class='but1']").send_keys("耐克")
time.sleep(2)

# ctrl a 全选
driver.find_element_by_xpath("//input[@class='but1']").send_keys(Keys.CONTROL, 'a')
time.sleep(2)

# ctrl x 剪切
driver.find_element_by_xpath("//input[@class='but1']").send_keys(Keys.CONTROL, 'x')
time.sleep(2)

# ctrl v 粘贴
driver.find_element_by_xpath("//input[@class='but1']").send_keys(Keys.CONTROL, 'v')
time.sleep(2)

# 回车键
driver.find_element_by_xpath("//input[@class='but1']").send_keys(Keys.ENTER)
time.sleep(3)

driver.quit()
等待时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 16:01

from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

driver.get("http://[服务器ip]/yuns/index.php")

# 隐式等待时间
# 添加等待时间,强制等待
time.sleep(2)

# 相当于最大等待时间,如果只用了2秒就加载出来,则无需等待10秒便继续执行后面的操作
# 存在这种情况:第一个页面有的元素在第二个页面也有,可能会出现原本要在第二个页面查找的元素,但是返回的元素是第一个页面的元素
driver.implicitly_wait(10)
driver.find_element_by_xpath("//input[@class='but1']").send_keys("女装")
time.sleep(3)

# 显示等待
ele = WebDriverWait(driver, 15, 0.5).until(EC.presence_of_element_located(
(By.XPATH, "//input[@class='but1']")))
ele.clear()
ele.send_keys("李林")
time.sleep(3)

# until_not
# ele2 = WebDriverWait(driver, 15, 0.5).until_not(EC.presence_of_element_located(
# (By.XPATH, "//input[@class='but1']")))

driver.quit()
⚠️alert弹窗处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 16:39

from selenium import webdriver
import time

driver = webdriver.Chrome()
# 自己定义一段js代码,用于模拟警告框
js = "var name = prompt('请输入你的名字:'); if (name) {alert('你的名字是:' + name)};"
driver.execute_script(js)
time.sleep(2)

# demo01:
# 打印警告框上的文本内容:“请输入你的名字:”
print(driver.switch_to.alert.text)
# 输入框输入 蔡坨坨
driver.switch_to.alert.send_keys('蔡坨坨')
time.sleep(2)
# 点击确认
driver.switch_to.alert.accept()
# 打印警告框上的文本内容:“你的名字是:蔡坨坨”
print(driver.switch_to.alert.text)
time.sleep(3)
# 点击确认
driver.switch_to.alert.accept()
time.sleep(2)
driver.quit()

# # demo02:
# # 点击取消
# driver.switch_to.alert.dismiss()
💻多窗口处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 16:36

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")
driver.maximize_window()
time.sleep(3)
driver.find_element_by_css_selector("form#form>span:nth-child(8)>input").send_keys("软件测试")
driver.find_element_by_css_selector("form#form>span:nth-child(9)>input").click()
time.sleep(3)

# 点击第一个搜索结果
driver.find_element_by_css_selector("div[class='result c-container new-pmd'][id='1']>h3>a").click()
time.sleep(3)
# 列出所有句柄
handles = driver.window_handles
print(handles)
# 打印当前句柄
print(driver.current_window_handle)
# 第一个窗口的索引是0
# 选择第二个窗口
driver.switch_to.window(handles[1])
time.sleep(2)

# 点击论坛
driver.find_element_by_css_selector("div[class='nexnav']>ul>:nth-child(4)>a").click()
time.sleep(3)

# 关闭当前句柄所在的窗体
driver.close()
time.sleep(3)

# 关闭所有窗体
driver.quit()
🖼截图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 16:49

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
time.sleep(3)
driver.get_screenshot_as_file(r"D:\Desktop\test01.png")

driver.quit()
🖼 iframe操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/15 19:51

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("https://mail.163.com")
driver.maximize_window()
time.sleep(2)

# 方式一:有id,name
# driver.switch_to.frame("x-URS-iframe1608033240227.6516")

# 方式二:先定位到iframe,再定位iframe里面的元素
frame = driver.find_element_by_xpath("//div[@id='loginDiv']/iframe")
driver.switch_to.frame(frame)

driver.find_element_by_xpath("//input[@data-placeholder='邮箱帐号或手机号码']").send_keys('15059224499')
driver.find_element_by_xpath('//input[@data-placeholder="输入密码"]').send_keys('123456')
time.sleep(3)

# # 切回主文档
# driver.switch_to.default_content()

# 从子frame切回到父frame
driver.switch_to.parent_frame()
# 点击企业邮箱
driver.find_element_by_xpath("//div[@class='headerNav']/a[1]").click()
time.sleep(3)

driver.quit()