我想在输入字段中键入一些内容,但是当我用类调用它时,它返回一个错误。网站有足够的时间加载所有元素,所以这不应该是问题所在
我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox()
browser.get('https://www.tradingview.com/chart/')
print("a")
time.sleep(5)
elem = browser.find_element_by_id("header-toolbar-symbol-search") # Find the search box
print("b")
elem.click()
time.sleep(5)
crypto_search = browser.find_element_by_class_name("search-Hsmn_0WX upperCase-Hsmn_0WX input-3n5_2-hI")
print("c")
crypto_search.send_keys("VETUSD")
time.sleep(10)
browser.quit()
当我运行代码时,会出现以下错误:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .search-Hsmn_0WX upperCase-Hsmn_0WX input-3n5_2-hI
它到达打印a和b的行,但在调用带有类的元素的行停止
根据文档,您需要使用“查找元素”
这是因为类是在一个页面上有多个类时使用的,所以只选择一个具有类名的元素是没有意义的,即使页面上只有一个元素
如果该元素是页面上唯一具有该类的元素,请尝试使用
1摆脱time.sleep(),因为您的测试将变得不可靠和缓慢。使用隐式/显式等待
2如果一个类中有多个类,请使用
css
或xpath
选择器在这里,我等待第一个元素是可点击的,第二个元素是可见的,这是Selenium中显式等待工作的一个示例
请注意,我的测试版本有多快
而不是
请尝试以下操作:
我试过了,结果成功了。
此外,由于这些类名是多个的,并且看起来不太具有描述性,因此我更喜欢以下选择器:
相关问题 更多 >
编程相关推荐