![](/img/trans.png)
[英]selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:
[英]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 無效。
干杯! :-)
我們需要在這里考慮一些事情。 正如您所提到的"When used same xpath for first step, which works fine, but failing in step 2"
是非常正確的。 3 個單獨的元素不能在HTML DOM
上同時具有相同的xpath
。
click()
有效,因為不是唯一的xpath
與第一個Next
按鈕匹配。 我建議您重建第一個Next
按鈕的xpath
以使其unique
onClick()
事件,它會改變HTML DOM
。 因此,當您調用click()
方法時, HTML DOM
發生變化。 原因如上所述,即由於Javascript
或Ajax Calls
存在, HTML DOM
發生了變化。 因此,在調用第一個click()
之后,我們必須再次嘗試為第二個Next
按鈕構造一個唯一的xpath
。Next
按鈕構造一個唯一的xpath
。考慮到所有這些事實,您將看到錯誤:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.