Selenium API


💬獲取驗證信息
# -*- 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()
🖥️​控制瀏覽器
# -*- 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()
🖥️設置瀏覽器尺寸
# -*- 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()
🉑動作方法
# -*- 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()
☄️多種屬性獲取
# -*- 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()
鼠標事件
# -*- 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()
⌨️鍵盤事件
# -*- 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()
等待時間
# -*- 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彈窗處理
# -*- 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()
💻多窗口處理
# -*- 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()
🖼️截圖
# -*- 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操作
# -*- 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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM