我正在测试Python Selenium,我有这样的代码:
from selenium import webdriver
url = 'https://www.youtube.com/channel/UC8tgRQ7DOzAbn9L7zDL8mLg/videos'
driver = webdriver.Chrome()
driver.get(url)
videos = driver.find_elements_by_class_name('style-scope ytd-grid-renderer')
for video in videos:
title = video.find_elements_by_xpath('.//*[@id="video-title"]').text
views = video.find_elements_by_xpath('.//*[@id="metadata-line"]/span[1]').text
when = video.find_elements_by_xpath('.//*[@id="metadata-line"]/span[2]').text
print(title,views,when)
在运行过程中,我有这个错误:
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted
(Session info: chrome=85.0.4183.83)
(Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.18363 x86_64)
它一直运行到“videos = driver .....”这一行你能帮我固定我这边吗?
当您试图使用类名来定位元素时,您不能使用多个类名,这将导致错误。你只需要提供一个。在你的代码中,“style-scope”和“ytd-grid-renderer”是两个不同的类,它们被附加到你的DOM标签上。如果您仍然想使用这两个类进行识别,您可以使用以下两种方法中的任何一种。
css选择器:
videos = driver.find_elements_by_css_selector('.style-scope.ytd-grid-renderer')
xpath:
videos = driver.find_elements_by_xpath(".//*[@class='style-scope ytd-grid-renderer']")
我尝试单击选择菜单并选择元素: 我的方式: 结果,我得到了这个异常: 组织.openqa.硒.无效选择器例外: 无效选择器: 不允许复合类名
我正在尝试通过webWhatsapp从聊天中打印我的一条消息。 我可以通过控制台选项卡中的Javascript来做到这一点,我这样做了 问题是,我试图在python上做同样的事情,但它对我不起作用… 以下是我的尝试: 我得到的错误是:消息:无效选择器:不允许复合类名 我对javascript有点陌生,很抱歉理解有误,谢谢你的帮助!:)
问题内容: 我正在尝试通过webWhatsapp从聊天中打印我的消息之一。 我可以通过“控制台”选项卡中的Javascript完成此操作 问题是我试图在python上做同样的事情,但对我不起作用。 这是我尝试过的: 我收到的错误是:消息:无效的选择器:不允许使用复合类名 我对javascript有点陌生,所以很抱歉造成误会,并感谢您的帮助!:) 问题答案: 根据 实施文档: 所以, 使用您将无法传
我试图得到以下每个元素使用 inspect元素的输出如下。 但是它失败了,并抛出下面的错误。 另外,我如何遍历每个类?每个类都包含子部分,我想在进入下一个类之前进一步单独处理这些子部分。
我得到以下错误: "不允许使用复合类名" 尝试访问Web元素时,元素的类名之间有空格。Web元素的页面源如下所示。 我试图通过CSS路径找到元素,如下所示。但是这个元素是不可搜索的。 这是在链接中给出的解决方法,但仍然没有成功。你的帮助将不胜感激。
我试图获取具有特定类名的所有元素: 然而我得到的错误是: 我知道类名中不允许有空格,但是我该怎么办呢? 谢啦