WEB自動化測試(三)
阿新 • • 發佈:2022-04-08
等待
1、固定等待,也就是使用sleep()方法
2、隱式等待,使用到的方法是implicitly_wait的方法,可以把它理解為設定最長等待時間
3、顯式等待,主要指的是程式每隔一段時間執行自定義的程式判斷條件,如果判斷成立,程式就會繼
續執行,那麼如果判斷失敗,就會報TimeOutExpection的異常資訊。
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as es
from selenium.webdriver.common.by import By
'''
element_to_be_clickable():元素可見時進行操作
'''
隱式等待
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://www.baidu.com/')
# driver.implicitly_wait(60)
# so=WebDriverWait(
# driver=driver,timeout=10).until(
# method=es.element_to_be_clickable((By.ID,'kw')))
# so.send_keys('段舒元')
# print('輸入的關鍵字:',so.get_attribute('value'))
# driver.quit()
顯式等待
'''text_to_be_present_in_element()元素的文字資源加載出來'''
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://mail.sina.com.cn/#')
# driver.implicitly_wait(60)
# driver.find_element_by_class_name('loginBtn').click()
# time.sleep(5)
# divText=WebDriverWait(
# driver=driver,
# timeout=10).until(
# method=es.text_to_be_present_in_element((
# By.XPATH,
# '/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]'),text_='請輸入郵箱名'))
# driver.quit()
'''判斷元素是否可見'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(60)
time.sleep(5)
about=WebDriverWait(
driver=driver,
timeout=10).until(
method=es.visibility_of_element_located((
By.LINK_TEXT,
'關於百度')))
print(about.text)
about.click()
time.sleep(5)
driver.quit()
鍵盤事件
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=driver.find_element_by_id('kw')
so.send_keys('Selenum3')
so.send_keys(Keys.CONTROL,'w')
t.sleep(5)
# 全部選擇輸入的關鍵字
so.send_keys(Keys.CONTROL,'a')
t.sleep(3)
# 然後複製
so.send_keys(Keys.CONTROL,'c')
t.sleep(3)
# 然後刪除
so.send_keys(Keys.BACKSPACE)
t.sleep(3)
# 然後貼上關鍵字
so.send_keys(Keys.CONTROL,'v')
t.sleep(5)
so.send_keys(Keys.F12)
t.sleep(5)
so.send_keys(Keys.F5)
t.sleep(5)
driver.quit()
js操作
# javascript全稱
from selenium import webdriver
import time as t
# dricer=webdriver.Chrome()
# dricer.maximize_window()
# dricer.get('https://cn.bing.com/')
# dricer.implicitly_wait(30)
# dricer.find_element_by_id('sb_form_q').send_keys('段舒元')
# dricer.find_element_by_id('search_icon').click()
# t.sleep(10)
# t.sleep(3)
# 瀏覽器滑動到底部
# down='var q=document.documentElement.scrollTop=10000'
# dricer.execute_script(down)
# t.sleep(3)
# dricer.find_element_by_link_text('2').click()
# t.sleep(3)
# dricer.execute_script(down)
# t.sleep(5)
# # 瀏覽器滑動到頂部
# up='var q=document.documentElement.scrollTop=0'
# dricer.execute_script(up)
# t.sleep(3)
# dricer.quit()
富文字
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://uutool.cn/ueditor/')
# driver.implicitly_wait(30)
# t.sleep(3)
# driver.switch_to.frame(0)
# t.sleep(3)
# driver.find_element_by_xpath('/html/body').send_keys('段舒元')
# t.sleep(3)
# driver.quit()
'''時間控制元件'''
'''
那麼我們需要填寫時間的屬性,具體解決問題的步驟為:
取消時間控制元件的只讀屬性
取消只讀屬性後,操作input控制元件的value,其實我們知道input裡面輸入的內容最終是在value的屬性裡面。
'''
def startTime(driver,content):
'''開始時間控制元件'''
js="$(\"input[placeholder='開始時間≥當前時間']\").removeAttr('readonly');" \
"$(\"input[placeholder='開始時間≥當前時間']\").attr('value','{0}')".format(content)
driver.execute_script(js)
def endTime(driver,content):
'''結束時間控制元件'''
js="$(\"input[placeholder='結束時間>開始時間']\").removeAttr('readonly');" \
"$(\"input[placeholder='結束時間>開始時間']\").attr('value','{0}')".format(content)
driver.execute_script(js)
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///D:/code/testDev/WEB%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/Time/Time/index.html')
t.sleep(3)
startTime(driver=driver,content='2000-09-15 00:00')
t.sleep(3)
endTime(driver=driver,content='2100-09-15 00:00')
t.sleep(3)
driver.get_screenshot_as_file(filename='時間控制元件.bmp')
driver.quit()