簡體   English   中英

selenium.common.exceptions.NoSuchElementException:消息:沒有這樣的元素:無法定位元素

[英]selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element

我試圖在 3 Step - 對話框中識別一個按鈕,因此需要在對話框的前 2 個步驟中單擊相同的“下一步”按鈕,當第一步使用相同的 xpath 時,效果很好,但在第 2 步中失敗。

我的 Python 代碼:

a=driver.find_element_by_xpath(".//*[@id='create-portal-popup']/div[4]/div[1]/button[3]")
a.send_keys(selenium.webdriver.common.keys.Keys.SPACE)

上面的代碼有效並且元素被點擊。

driver.implicitly_wait(30)
b=driver.find_element_by_xpath(".//*[@id='create-portal-popup']/div[4]/div[1]/button[3]")
b.send_keys(selenium.webdriver.common.keys.Keys.SPACE)

這失敗,但有以下異常。

觀察到的異常:

Traceback (most recent call last):
  File "C:\Users\sabarish.kannan\workspace1\de.vogella.python.first\src\FirstModule.py", line 49, in <module>
    b=driver.find_element_by_xpath(".//*[@id='create-portal-popup']/div[4]/div[1]/button[3]")
  File "C:\Users\sabarish.kannan\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 354, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:\Users\sabarish.kannan\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 832, in find_element
    'value': value})['value']
  File "C:\Users\sabarish.kannan\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 297, in execute
    self.error_handler.check_response(response)
  File "C:\Users\sabarish.kannan\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='create-portal-popup']/div[4]/div[1]/button[3]"}
  (Session info: chrome=61.0.3163.100)
  (Driver info: chromedriver=2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform=Windows NT 10.0.10240 x86_64)

如果您無法找到該元素,那么在導航到第 2 步后,您的 DOM 肯定會發生一些變化,使您的 xpath 無效。

  1. 確保您嘗試定位的元素,不要只是假設步驟 1 和步驟 2 中的“下一步”按鈕都相同。
  2. 嘗試使用不同的定位器方法,也許使用 id/class/css/其他選擇器方法,如果您能在第 2 步中找到與“下一步”按鈕相關聯的。

干杯! :-)

我們需要在這里考慮一些事情。 正如您所提到的"When used same xpath for first step, which works fine, but failing in step 2"是非常正確的。 3 個單獨的元素不能在HTML DOM上同時具有相同的xpath

  1. 您的第一個click()有效,因為不是唯一的xpath與第一個Next按鈕匹配。 我建議您重建第一個Next按鈕的xpath以使其unique
  2. 一個按鈕總是應該有一個onClick()事件,它會改變HTML DOM 因此,當您調用click()方法時, HTML DOM發生變化。 原因如上所述,即由於JavascriptAjax Calls存在, HTML DOM發生了變化。 因此,在調用第一個click()之后,我們必須再次嘗試為第二個Next按鈕構造一個唯一的xpath
  3. 同樣,由於上述原因,您也需要為第三個Next按鈕構造一個唯一的xpath

考慮到所有這些事實,您將看到錯誤:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element

暫無
暫無

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

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