使用Python从Selenium的web元素列表中查找一个元素



class = "a1"这是以下问题的后续问题:在Selenium中使用Pything

访问web元素列表中的web元素HTML文件TEST2.html
<!DOCTYPE html>
<html>
<body>
<div class="w-30-ns W-100 pp">
<h1 class = "a1">My First Heading</h1>
</div>
<div class="w-30-ns W-100 pp">
<h1 class = "a1">My Second Heading</h1>
</div>
<div class="w-30-ns W-100 pp">
<h1 class = "a1">My Third Heading</h1>
</div>       
</body>
</html>

试图找到所有的类。find_element_by_tag_name有效。find_element_by_class_name不起作用。我得到一个nosuchelementexception;消息:没有这样的元素:无法定位元素:{"method":"css selector"; "

from typing import List, Text
from selenium import webdriver
from selenium.webdriver.remote.webelement import WebElement
driver = webdriver.Chrome()
url = 'C:\Users\ed821\Downloads\TEST2.html'
driver.get(url)
titles = driver.find_elements_by_class_name("pp")
for title in titles:
heading = title.find_element_by_tag_name("h1")      ## This works
heading2 = title.find_element_by_class_name("a1")   ## This does not
print("Title is:" + heading.text)
print("Also: " + heading2)

我需要按"class"(而不是标签)。上面的例子当然只是为了这个例子而构建的,但是真正的网页包含了太多类似的标签。

我在只需要单引号的地方使用了双引号。

find_element_by_tag_name需要双引号,find_element_by_class_name需要单引号

文档在这里

:

driver = webdriver.Chrome()
url = 'C:\Users\ed821\Downloads\TEST2.html'
driver.get(url)
titles = driver.find_elements_by_class_name("pp")
for title in titles:
heading = title.find_element_by_tag_name("h1")      ## This works
heading2 = title.find_element_by_class_name('a1')   ## This works
print("Title is:" + heading.text)
print("Also: " + heading2.text)

最新更新