简体   繁体   English

将Selenium IDE移植到Python之后-没有这样的元素

[英]Following Selenium IDE to Python - No such element

This is my first experience with Selenium and HTML. 这是我第一次使用Selenium和HTML。

I tried to use IDE and then follow "the way" it indicated. 我尝试使用IDE,然后按照指示的“方式”进行操作。 My IDE recorded script says 我的IDE录制脚本说

Command | Target
-----------------------------------------------
click   | css=#hamburger-btn
click   | css=div.menu-item.menu-item-selected > span.menu-item-title
click   | css=div.menu-item.menu-item-selected > div.menu-panel-content > div.menu-category-cont > div.menu-category-sub > div.menu-category-sub-item.menu-category-sub-item-selected > span.menu-category-sub-item-title

And I tried to implement it this way: 我试图通过这种方式实现它:

browser = webdriver.Chrome()
browser.get(url) #url was defined before
browser.find_element_by_css_selector("#hamburger-btn").click()
browser.find_element_by_css_selector("div.menu-item.menu-item-selected>span.menu-item-title").click()
browser.find_element_by_css_selector('div.menu-item.menu-item-selected>div.menu-panel-content>div.menu-category-cont>div.menu-category-sub>div.menu-category-sub-item.menu-category-sub-item-selected>span.menu-category-sub-item-title').click()

but I get this "No such element" message/error 但我收到此“无此元素”消息/错误

browser.find_element_by_css_selector('div.menu-item.menu-item-selected>div.menu-panel-content>div.menu-category-cont>div.menu-category-sub>div.menu-category-sub-item.menu-category-sub-item-selected>span.menu-category-sub-item-title').click()
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 597, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 966, in find_element
'value': value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 320, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"div.menu-item.menu-item-selected>div.menu-panel-content>div.menu-category-cont>div.menu-category-sub>div.menu-category-sub-item.menu-category-sub-item-selected>span.menu-category-sub-item-title"}

What am I doing wrong? 我究竟做错了什么?

Thanks 谢谢

GB 国标

Maybe the element you're trying to reach has not loaded properly. 可能您尝试访问的元素未正确加载。 Try adding a wait statement, something along the lines of 尝试添加一条等待语句,类似

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.by import By

...

browser = webdriver.Chrome()
browser.get(url) #url was defined before
browser.find_element_by_css_selector("#hamburger-btn").click()
browser.find_element_by_css_selector("div.menu-item.menu-item-selected>span.menu-item-title").click()

WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'div.menu-item.menu-item-selected>div.menu-panel-content>div.menu-category-cont>div.menu-category-sub>div.menu-category-sub-item.menu-category-sub-item-selected>span.menu-category-sub-item-title')))

browser.find_element_by_css_selector('div.menu-item.menu-item-selected>div.menu-panel-content>div.menu-category-cont>div.menu-category-sub>div.menu-category-sub-item.menu-category-sub-item-selected>span.menu-category-sub-item-title').click()

This is considering this element in fact exists in you page and you're correctly addressing it with your css selector. 这是考虑到该元素实际上已经存在于您的页面中,并且您正在使用CSS选择器正确地解决它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM