当前位置: 首页 > 知识库问答 >
问题:

硒功能。CLASS_NAME每次都不工作吗?

权胜泫
2023-03-14

这是我使用的代码

import os
import uuid
import time
from selenium.webdriver import *
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.keys import Keys

#########################################################################################################################################################################
# Mettre ici la requeste qui commence le scrapping
channel = "https://www.youtube.com/c/TsodingDaily/videos"
# Headless : True or False
headless = False
#########################################################################################################################################################################

# Parametre du navigateur
Options = Options()
if headless : Options.add_argument("--headless")
#s = Service("drivers\\geckodriver.exe",0,None,"drivers\\geckodriver.log")
#driver = Firefox(service=s, options=Options)
driver = Firefox(options=Options)

driver.get(channel)
driver.find_element(By.XPATH, "/html/body/c-wiz/div/div/div/div[2]/div[1]/div[4]/form/div/div/button/span").click()
#l = driver.find_elements(By.CLASS_NAME, "style-scope ytd-grid-video-renderer")
l = driver.find_elements(By.CLASS_NAME, "yt-simple-endpoint inline-block style-scope ytd-thumbnail")
print(l)

我不明白为什么当我使用类名“yt-simple-endpoint inline-block style-scope YTD-thumbnail”时,我什么也没得到,但相同的代码却在处理“style-scope YTD-grid-video-renderer”

你能帮我吗?

共有1个答案

鲁光霁
2023-03-14

不能使用以下方式传递多个类名:

driver.find_element(By.CLASS_NAME, "classname")

这样做会导致复合类名错误,如下所示:

Message: invalid selector: Compound class names not permitted

要传递多个类名,可以使用以下定位器策略之一:

>

  • 使用css_selector:

    l = driver.find_elements(By.CSS_SELECTOR, ".yt-simple-endpoint.inline-block.style-scope.ytd-thumbnail")
    

    使用xpath:

    l = driver.find_elements(By.XPATH, "//*[@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail']")
    

    您可以在中找到一些相关的详细讨论:

      < li >不允许硒化合物类名 < li >如何使用Selenium和Python定位具有多个类名的元素

  •  类似资料:
    • 我正在尝试连接到我的数据库,但它显示了mysql_connect函数中的错误。 错误是:致命错误:未捕获错误:调用C:\xampp\htdocs\connect中未定义的函数mysql\u connect()。php:12堆栈跟踪:#0 C:\xampp\htdocs\Test。php(3):在C:\xampp\htdocs\Connect中抛出require()#1{main}。php在线12

    • 我尝试从登录页面获取密码,然后尝试从mysql收集存储的密码。然后我将其与提交的密码进行比较。现在我想,如果两个密码匹配,然后重定向到一个页面。但问题是每次页面重定向时。如果密码与页面重定向不匹配。 我已经删除了这个功能,并试图以简单的方式做它。但仍然不起作用。编辑代码:

    • 问题内容: 我想写一些类似的东西: 这有效: 这有效: 像这样的作品: 但是我需要在Meeting_time上做一个大于查询的事情,所以我需要将它写为一个字符串,我认为呢? 但是,两个sql查询在一起都会产生以下错误: 我觉得我好近……我在这里想念什么? 问题答案: 当不清楚该列来自哪个表时,会出现此消息。这应该工作:

    • 我对jQuery提交功能有一些疑问。 这里是工作环境 jQuery:1.7。2,铬(18.0.1025.168米)。 有两个问题。 第一: 我的密码是这样的 HTML jQuery 问题是它在firefox和opera中运行良好,但在chrome中运行良好。 2st: html:如上所述。 jQuery: 它在火狐、歌剧和铬合金中不起作用。它总是触发form.submit原因。 我很困惑。谁能弄清

    • 每次打开IDEA在其任务栏中都会有 Inexing module '我的项目名称',这个设置是必须的吗?如果不是我可以在那里把这个功能关闭?

    • 有没有办法播放相同的音频文件(使用 sun.audio),而不必每次都加载文件输入流?这就是我现在尝试的方式: 尽管“nomnom.au”只有几秒钟,但当我重复此方法(播放声音)大约 30 次时,我很快就会出现内存不足错误。我认为这是由于每次需要播放音频文件时我都会加载音频文件这一事实引起的。 我尝试在类的开头声明FileInpuStream和AudioStream,只在main方法的开头加载我的