1. 程式人生 > 其它 >WEB自動化測試(三)

WEB自動化測試(三)

等待

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()