我在尝试访问时不断收到 NoSuchElementException。我能做什么?

I keep getting NoSuchElementException while trying to access. What can I do?

所以我正在尝试进入网络抓取和网络自动化。我刚开始使用硒,所以我有点不知道该怎么做。我在这里寻找类似的问题,到目前为止 none 已经解决了问题是什么?

这是我的代码:

from selenium import webdriver                    
from selenium.webdriver.common.keys import Keys    
 


url = 'https://starcitygames.com/search/?search_query=Lantern%20of%20insight'

browser = webdriver.Chrome()
browser.get(url)
browser.maximize_window()
browser.implicitly_wait(20)

prices = browser.find_element_by_css_selector('div.hawk-results-item__options-table-cell hawk-results-item__options-table-cell--price childAttributes')
browser.switch_to.frame(prices)

for each in prices:
    p = each.text
    print(p) 

我收到以下错误消息:

 raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"div.hawk-results-item__options-table-cell hawk-results-item__options-table-cell--price childAttributes"} 

如果它有助于 html 我尝试访问的元素如下:

<div class="hawk-results-item__options-table-cell hawk-results-item__options-table-cell--price childAttributes">.99</div>

那我能改变什么?我已经从 find_element_by_class 切换到 css 选择器。

在此先感谢您的帮助!

您的方法存在一些问题。
首先,find_element_by_* 函数已弃用,因此您应该改用 find_element() 函数。您将需要此导入来执行此操作。

from selenium.webdriver.common.by import By

考虑到您正在尝试遍历找到的元素,我想您打算使用 find_elements(),其中 returns 与给定定位器匹配的元素列表。
使用cssSelector时,需要指定html标签,然后打开[]括号指定属性。

在你的情况下这应该有效

prices = browser.find_elements(By.CSS_SELECTOR, "div[class='hawk-results-item__options-table-cell hawk-results-item__options-table-cell--price childAttributes']")