我在尝试访问时不断收到 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']")
所以我正在尝试进入网络抓取和网络自动化。我刚开始使用硒,所以我有点不知道该怎么做。我在这里寻找类似的问题,到目前为止 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']")