簡體   English   中英

在 Selenium 中返回輸出之前,方法 is_displayed() 出現錯誤

[英]Method is_displayed() gets an error before returning an output in Selenium

我在 Python 中使用 Selenium。

在我的腳本中,我編寫了這一行來檢查是否存在特定元素:

doesElementExist = driver.find_element(By.CSS_SELECTOR,'div.MediaThumbnail.Media--playButton>img').is_displayed()
print(doesElementExist)

為了測試,我在一個我知道該元素不存在的網站上運行了腳本。 因此,我期望 False 作為返回輸出,因為 is_displayed() 方法返回一個布爾值。

但是,我收到一條錯誤消息,指出此元素不存在,這會阻止腳本運行,而不是返回 false 並繼續運行腳本。

Traceback (most recent call last):

  File ~/Desktop/ImageScraping/birdsScrapeTest.py:70 in <module>
    if driver.find_element(By.CSS_SELECTOR,'div.MediaThumbnail.Media--playButton>img').is_displayed() == True:

  File /opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py:1251 in find_element
    return self.execute(Command.FIND_ELEMENT, {

  File /opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py:430 in execute
    self.error_handler.check_response(response)

  File /opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py:247 in check_response
    raise exception_class(message, screen, stacktrace)

NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"div.MediaThumbnail.Media--playButton>img"}

知道為什么會這樣嗎?

這不是is_displayed()方法的作用。 此方法將告訴您element是否可見(隱藏但在 DOM 中)。 因此,為了實現您期望的用法,您可以改為:

try:
    doesElementExist = driver.find_element(By.CSS_SELECTOR,'div.MediaThumbnail.Media--playButton>img').is_displayed()
except NoSuchElementException:
    doesElementExists = False
    print("Element doesn't exists")

print(doesElementExist)

無論元素不存在於頁面上還是只是隱藏,此邏輯都應該有效

暫無
暫無

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

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