基于python3的selenium3的web自動(dòng)化
1甜刻、在線安裝selenium3
進(jìn)入dos窗口侄泽,輸入:pip install selenium
2礁芦、卸載selenium
進(jìn)入dos窗口,輸入:pip uninstall selenium
3悼尾、檢查是否安裝成功:pip list
4柿扣、每種瀏覽器,都要有對(duì)應(yīng)的驅(qū)動(dòng)诀豁,放在 python安裝目錄下 或 Python35\Scripts目錄下窄刘,并配置
好環(huán)境變量窥妇,如果安裝python的時(shí)候舷胜,自動(dòng)配置了環(huán)境變量,就不用手動(dòng)配置了活翩。
'''
###############################
#1烹骨、導(dǎo)入selenium包的webdriver方法
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
#2、打開瀏覽器
#1)材泄、打開火狐瀏覽器
#dr = webdriver.Firefox()
#2)沮焕、獲取瀏覽器的驅(qū)動(dòng),并打開谷歌瀏覽器
dr = webdriver.Chrome()
#3)拉宗、打開被測(cè)系統(tǒng)頁(yè)面
url = "https://www.so.com/"
dr.get(url)
#元素定位
'''
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_tag_name()
find_element_by_xpath()
find_element_by_css_selector()
'''
'''
腳本的編寫峦树,遵循LOVE原則:
L:locate -- 定位
O:operate -- 操作
V:verify -- 斷言辣辫,驗(yàn)證實(shí)際結(jié)果與預(yù)期結(jié)果是否一致
E:except -- 異常處理
'''
#1、根據(jù)id定位 -- 要求:屬性值必須唯一
'''
inputBox = dr.find_element_by_id("input")
inputBox.send_keys("selenum自動(dòng)化")
#點(diǎn)擊 搜索 按鈕
dr.find_element_by_id("search-button").click()
'''
#2魁巩、根據(jù)name定位 -- 要求:屬性值必須唯一
'''
dr.find_element_by_name("q").send_keys("selenum自動(dòng)化")
#點(diǎn)擊 搜索 按鈕
dr.find_element_by_id("search-button").click()
'''
#3急灭、根據(jù)class_name定位 -- 要求:屬性值必須唯一
'''
dr.find_element_by_class_name("placeholder").send_keys("selenum自動(dòng)化")
#點(diǎn)擊 搜索 按鈕
dr.find_element_by_class_name("skin-search-button").click()
'''
#4、根據(jù) link_text 定位 -- 要求:屬性值必須唯一
'''
dr.find_element_by_link_text("資訊").click()
sleep(3)
#5谷遂、根據(jù) partial_link_text 定位 -- 要求:屬性值必須唯一
dr.find_element_by_partial_link_text("50億").click()
'''
#6葬馋、根據(jù)tag_name定位
#inputBox = dr.find_element_by_tag_name("input")
#inputBox.send_keys("selenum自動(dòng)化")
#6.1定位一組元素
'''
inputBoxes = dr.find_elements_by_tag_name("input")
for inputBox in inputBoxes:
if inputBox.get_attribute("type") == "text" and \
inputBox.get_attribute("suggestwidth") == '540px':
inputBox.send_keys("selenum自動(dòng)化")
'''
#7、根據(jù)xpath定位
#1)肾扰、根據(jù)絕對(duì)路徑來(lái)定位
#輸入搜索關(guān)鍵字
'''
path1 = "/html/body/div[2]/div/section[2]/div/form/fieldset/div[2]/input"
dr.find_element_by_xpath(path1).send_keys("selenum自動(dòng)化")
#點(diǎn)擊 搜索 按鈕
path2 = "/html/body/div[2]/div/section[2]/div/form/fieldset/input[4]"
dr.find_element_by_xpath(path2).click()
'''
#2)畴嘶、通過(guò)元素屬性定位
#dr.find_element_by_xpath("http://input[@type='text']").send_keys("selenum自動(dòng)化")
#dr.find_element_by_xpath("http://*[@type='text']").send_keys("selenum自動(dòng)化")
#點(diǎn)擊 搜索 按鈕
#3)、通過(guò)多個(gè)屬性組合定位
#dr.find_element_by_xpath("http://input[@type='text' and @suggestwidth='540px']").send_keys("selenum自動(dòng)化")
#4)集晚、通過(guò)層次與屬性組合定位
'''
xpathAddr = "http://div[@class='skin-search-input hover']/input[@type='text']"
dr.find_element_by_xpath(xpathAddr).send_keys("selenum自動(dòng)化")
'''
####### 8窗悯、根據(jù)css定位
#1)、通過(guò)class 屬性定位
#dr.find_element_by_css_selector(".placeholder").send_keys("selenum自動(dòng)化")
#2)甩恼、通過(guò)id 屬性定位
#dr.find_element_by_css_selector("#search-button").click()
#3)蟀瞧、通過(guò)標(biāo)簽名定位
#dr.find_element_by_css_selector("input").send_keys("selenium自動(dòng)化")
#4)、通過(guò)屬性定位
#dr.find_element_by_css_selector("input[autocomplete=off]").send_keys("selenium自動(dòng)化")
#dr.find_element_by_css_selector("[autocomplete=off]").send_keys("selenium自動(dòng)化")
# 5)条摸、通過(guò)層級(jí)的父子關(guān)系定位
#dr.find_element_by_css_selector("div > input").send_keys("selenium自動(dòng)化")
# 6)悦污、通過(guò)層級(jí)與屬性組合定位
#dr.find_element_by_css_selector("div > input.placeholder#input").send_keys("selenium自動(dòng)化")
#dr.find_element_by_css_selector("div.skin-search-input.hover > input.placeholder#input").send_keys("selenium自動(dòng)化")
######################## 元素定位之By類 #########################
#根據(jù)id定位
dr.find_element(By.ID,"input").send_keys("selenium自動(dòng)化")
#根據(jù)class定位
dr.find_element(By.CLASS_NAME,"placeholder").send_keys("selenium自動(dòng)化")
#根據(jù)name定位
dr.find_element(By.NAME,"q").send_keys("selenium自動(dòng)化")
#根據(jù)xpath定位
dr.find_element(By.XPATH,"http://input[@type='text']").send_keys("selenium自動(dòng)化")
#根據(jù)css定位
dr.find_element(By.CSS_SELECTOR,"[autocomplete=off]").send_keys("selenium自動(dòng)化")
###################################################
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
dr = webdriver.Chrome()
dr.get("https://mail.163.com/")
sleep(1)
#定位表單位置
frame = dr.find_element(By.CSS_SELECTOR,"#x-URS-iframe")
#切換表單
dr.switch_to.frame(frame)
#輸入用戶名
dr.find_element(By.CSS_SELECTOR,"[name=email]").send_keys("username")
#切換回默認(rèn)表單
dr.switch_to.default_content()
#點(diǎn)擊 企業(yè)郵箱
dr.find_element(By.LINK_TEXT,"企業(yè)郵箱").click()