簡體   English   中英

用於檢查元素是否存在的Python Selenium Webdriver需要時間

[英]Python Selenium Webdriver to check if element does NOT exist takes time

嘗試在幾次GUI操作后驗證某些按鈕不存在(預計不存在)。 我使用的是find_element_by_xpath(),但速度非常慢。 超時的任何解決方案?

實際上,如果找不到指定的元素,WebDriver的find_element方法將等待元素的隱式時間。

WebDriver中沒有像isElementPresent()那樣的預定義方法來檢查。 你應該為此編寫自己的邏輯。

邏輯

public boolean isElementPresent()
{
   try
   {
      set_the_implicit time to zero
      find_element_by_xpath()
      set_the_implicit time to your default time (say 30 sec)
      return true;
   }
   catch(Exception e)
   {
       return false;
   }
}

見: http//goo.gl/6PLBw

如果您嘗試檢查元素是否不存在,最簡單的方法是使用with語句。

from selenium.common.exceptions import NoSuchElementException

def test_element_does_not_exist(self):
    with self.assertRaises(NoSuchElementException):
        browser.find_element_by_xpath()

至於暫停,我喜歡“服從測試山羊”中的那個

# Set to however long you want to wait.
MAX_WAIT = 5

def wait(fn):  
    def modified_fn(*args, **kwargs):  
        start_time = time.time()
        while True:  
            try:
                return fn(*args, **kwargs)  
            except (AssertionError, WebDriverException) as e:  
                if time.time() - start_time > MAX_WAIT:
                    raise e
            time.sleep(0.5)
    return modified_fn


@wait
def wait_for(self, fn):
    return fn()

# Usage - Times out if element is not found after MAX_WAIT.
self.wait_for(lambda: browser.find_element_by_id())

暫無
暫無

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

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