你正在學 Web 自動化測試?Selenium 基本操作你瞭解嘛? | 原力計劃
摘要:3、三種等待方式,沒有選擇其中之一來使用,元素沒有被加載出來。這裏也是拿一號店來舉例,我們在進入一號店登錄頁面後,點擊QQ的方式來登錄,就會彈出新的窗口,這時候就需要切換到我們具體想要操作的窗口:。
#實例化驅動
driver =webdriver.Chrome
#隱式等待:
driver.implicitly_wait(20)
# 打開網頁:
driver.get('https://www.126.com/')
#跳進iframe,根據獲取標籤名來通過下標跳進
iframes=driver.find_elements_by_tag_name('iframe')
driver.switch_to.frame(iframes[0])
inputs = driver.find_elements_by_tag_name('input')
for i in inputs:
if i.get_attribute('placeholder') =='郵箱帳號或手機號碼':
i.send_keys('123456')
elif i.get_attribute('placeholder') =='輸入密碼':
i.send_keys('456789')
break
driver.find_element_by_id('dologin').click
#實例化驅動
driver =webdriver.Chrome
#隱式等待:
driver.implicitly_wait(20)
# 打開網頁:
driver.get('https://www.126.com/')
#跳進iframe,方式二,逐層定位,跳進iframe,先定爲父級唯一元素,再定位包含子元素來跳進
divs = driver.find_element_by_id('loginDiv')
driver.switch_to.frame(divs.find_element_by_tag_name('iframe'))
inputs = driver.find_elements_by_tag_name('input')
for i in inputs:
if i.get_attribute('placeholder') =='郵箱帳號或手機號碼':
i.send_keys('123456')
elif i.get_attribute('placeholder') =='輸入密碼':
i.send_keys('456789')
break
driver.find_element_by_id('dologin').click
#實例化驅動
driver = webdriver.Chrome
#隱式等待
driver.implicitly_wait(20)
#打開126登錄頁面:
driver.get('https://passport.yhd.com/passport/login_input.do')
#點擊QQ登錄
driver.find_element_by_class_name('iconfont').click
#句柄切換:
driver.switch_to.window(driver.window_handles[-1])
#跳進iframe方式三:先獲取所有的iframe的標籤名
iframes = driver.find_elements_by_tag_name('iframe')
for i in iframes:
#循環查找符合條件的那一組iframe
if i.get_attribute('width') =='370':
#跳進我想要跳進的iframe
driver.switch_to.frame(i)
#點擊賬號密碼登錄
driver.find_element_by_id('switcher_plogin').click
driver.switch_to.default_content
#實例化驅動
driver = webdriver.Chrome
#隱式等待
driver.implicitly_wait(20)
#打開126登錄頁面:
driver.get('https://passport.yhd.com/passport/login_input.do')
#點擊QQ登錄
driver.find_element_by_class_name('iconfont').click
#句柄切換: 這裏先是收集所有的窗口,以列表的形式展示
wins = driver.window_handles
#這裏打印下它(具體操作不需要打印,這裏是爲了更直觀的讓您瞭解它)
print(wins)
#之後具體切換我們想要的哪一個,比如你想要將操作實時保持在最前,那-1就可以咯
driver.switch_to.window(wins[-1])
#實例化驅動
driver = webdriver.Chrome
#隱式等待
driver.implicitly_wait(20)
#打開攜程頁面:
driver.get('https://www.ctrip.com/')
from selenium.webdriver.support.ui import Select #導入Select下拉框
#方式一: 根據index下標來選擇房間數:
#先定位到房間數
fj = driver.find_element_by_id('J_roomCountList')
#實例化select
select1 = Select(fj)
#根據下標來選擇房間數爲2的 因爲第一個下標爲0,房間數爲1,所以第二個下標爲1,房間數爲2
select1.select_by_index(1)
#實例化驅動
driver = webdriver.Chrome
#隱式等待
driver.implicitly_wait(20)
#打開攜程頁面:
driver.get('https://www.ctrip.com/')
from selenium.webdriver.support.ui import Select #導入Select下拉框
#方式二: 根據value值來選擇房間數:
#先定位到房間數
fj = driver.find_element_by_id('J_roomCountList')
#實例化select
select1 = Select(fj)
#根據元素value的值來進行房間數的切換,這裏切換爲value值2的,也是
#房間數爲2
select1.select_by_value('2')
#實例化驅動
driver = webdriver.Chrome
#隱式等待
driver.implicitly_wait(20)
#打開攜程頁面:
driver.get('https://www.ctrip.com/')
from selenium.webdriver.support.ui import Select #導入Select下拉框
#方式三: 根據文本內容來選擇房間數:
#先定位到房間數
fj = driver.find_element_by_id('J_roomCountList')
#實例化select
select1 = Select(fj)
#複製頁面中的文本信息就可以,使用visible_text方式
select1.select_by_visible_text('3間')
#實例化驅動
driver = webdriver.Chrome
#隱式等待
driver.implicitly_wait(20)
#打開攜程頁面:
driver.get('http://www.baidu.com')
from selenium.webdriver.common.action_chains import ActionChains #導入鼠標懸浮模塊
#將鼠標懸浮在設置上
set = driver.find_element_by_id('s-usersetting-top')
ActionChains(driver).move_to_element(set).perform
#點擊搜索設置
driver.find_element_by_class_name('setpref').click
#點擊保存設置
'prefpanelgo').click
#對彈窗進行確定操作
alert = driver.switch_to.alert
alert.accept
alert = driver.switch_to.alert
alert.dismiss