我尝试使用find_element_by_class_name
,其中类有空格但不起作用:
以下是代码:
<a class="yt-simple-endpoint style-scope yt-formatted-string" href="/user/santanderbrasil">Santander Brasil</a>
我希望得到内容&#34; Santander Brasil&#34;
我尝试了以下内容:
driver.find_element_by_class_name("yt-simple-endpoint.style-scope.yt-formatted-string")
driver.find_element_by_class_name("a.yt-simple-endpoint.style-scope.yt-formatted-string")
和
driver.find_element_by_class_name("a.yt-simple-endpoint.")
没有工作......
任何帮助?
答案 0 :(得分:3)
改为使用css选择器功能。
driver.find_element_by_css_selector("a.yt-simple-endpoint.style-scope.yt-formatted-string")
答案 1 :(得分:2)
这是三个独立的类,find_element_by_class_name()
只接收一个类作为参数。例如
driver.find_element_by_class_name('yt-simple-endpoint')
您在类之间添加的.
代表class
中的css_selector
。您可以使用它来使用css_selector
driver.find_element_by_css_selector('.yt-simple-endpoint.style-scope.yt-formatted-string')
或xpath
driver.find_element_by_xpath('//a[@class="yt-simple-endpoint style-scope yt-formatted-string"]')
答案 2 :(得分:0)
试试这个
driver.find_element_by_xpath("//div[contains(@class, 'yt-simple-endpoint') and contains(@class, 'style-scope') and contains(@class, 'yt-formatted-string')]"")
不确定find_element_by_xpath方法,因为我没有在python中使用selenium,但无论该函数是什么,选择器都应该这样做。
希望这有帮助。
答案 3 :(得分:0)
所有这些对我有用(Firefox驱动程序):
yt-simple-endpoint
style-scope
yt-formatted-string
yt-simple-endpoint.style-scope.yt-formatted-string
请注意,最后一个班级名称实际上与您问题中的第一个班级名称相同。它的工作原理是因为Selenium在内部将类名转换为CSS选择器,然后将其用于搜索。如果你想确定特定标签的内容,例如只匹配<a>
标签与那些类,那么你需要查看CSS选择器和其他选项,如XPath。
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("file:///tmp/test.html")
for class_name in 'yt-simple-endpoint', 'yt-formatted-string', 'style-scope', 'yt-simple-endpoint.style-scope.yt-formatted-string':
e = driver.find_element_by_class_name(class_name)
print(e.text)
driver.close()
<强>输出强>
Santander Brasil Santander Brasil Santander Brasil Santander Brasil
test.html
文件包含:
<html>
<head><title>Test</title></head>
<body>
<a class="yt-simple-endpoint style-scope yt-formatted-string" href="/user/santanderbrasil">Santander Brasil</a>
</body>
</html>