簡體   English   中英

如何在硒python測試中設置等待條件

[英]How to set a wait condition in selenium python test

我想問一下如何解決測試中的時間延遲。 我現在有一個像這樣的腳本:

WebDriverWait (self.browser, 20) .until (EC.element_to_be_clickable ((By.ID, "Login1_LoginButton"))).
sleep (5) \ t
self.assertEqual ("Page 1 | Hotline", self.browser.title)
print ("Login OK")

登錄后檢查頁面名稱時,這是對應用程序的登錄。 由於Internet的速度,它並非總是最佳狀態,有時測試會失敗。 最好在這里放置一個條件,以等待應用程序登錄然后檢查。 也給那里睡覺(5)我找到了錯誤的解決方案。 有想法嗎

富人

成功登錄后,您必須確定哪個元素顯示在最后一個元素中,然后編寫該元素的定位符並傳入Web驅動程序命令。 WebDriverwait是為此的最佳解決方案:

點擊登錄按鈕后,您可以聲明頁面名稱,如下所示:

wait = WebDriverWait(self.browser, 10)
element = wait.until(EC.visibility_of_element_located((By.ID, 'id of web page heading or any element that loads after')))  

self.assertEqual ("Page 1 | Hotline", self.browser.title)
print ("Login OK")

請注意,這種情況的最極端情況是time.sleep() ,它將條件設置為要等待的確切時間段。

你可以參考官方鏈接

像下面這樣設置您的等待條件,它對我有用。 如果沒有工作,請告訴我。 並且不要與self.browser和self.assertEqual混淆,我沒有使用self,因為,這對我有用,而無需創建類。 如果要創建類和方法,則應聲明自變量。 對於我的程序,我剛剛創建了方法並運行並聲明為全局變量。如下所示,

def setup():
     global driver
     driver = webdriver.Chrome(executable_path="")
     driver.maximize_window()

def execute():

    wait = WebDriverWait(browser, 10)
    element = wait.until(EC.visibility_of_element_located((By.ID, 'id of web 
    page heading or any element that loads after')))  

    assertEqual ("Page 1 | Hotline", self.browser.title)
    print ("Login OK")

有關用例的更多信息將有助於我們構建更規范的答案。 但是,您可以考慮以下方法:

  • 如果您的用例是要斷言頁面標題 ,則可以為<body>標記內的任何元素(例如頁面標題)引入WebDriverWait ,這意味着此時頁面標題,<title>標記(始終是<head>標記的一部分)必然要在<body>標記內的元素之前渲染,您可以使用以下解決方案:

     WebDriverWait (self.browser, 20) .until (EC.visibility_of_element_located ((By.CSS_SELECTOR, "css_page_header"))) self.assertEqual ("Page 1 | Hotline", self.browser.title) print ("Login OK") 
  • 您還可以誘導WebDriverWait頁面標題包含某些文本(例如熱線) ,然后聲明完整的頁面標題 ,如下所示:

     WebDriverWait (self.browser, 20) .until (title_contains("Hotline")) self.assertEqual ("Page 1 | Hotline", self.browser.title) print ("Login OK") 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM