在selenium python中,按类名称查找元素的属性是什么?

2024-06-16 09:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

browser = webdriver.Firefox()
browser.get(url)
divs = browser.find_elements_by_class_name('class')

浏览器是否有任何属性。通过类名称(“类”)查找元素

例如,如果我有这样的代码:

<div class="foo">
    <a href="" class="poo">one</a>
    <a href="" class="poo">two</a>
    <a href="" class="poo">three</a>
</div>
<div class="foo">
    <a href="" class="koo">one</a>
    <a href="" class="koo">two</a>
    <a href="" class="koo">three</a>
</div>

我想从“a”标记中获取文本。 但首先,我想得到div。 所以我会这样做:

divs = browser.find_elements_by_class_name('foo')

现在我想从我的divs数组中获取所有的“a”标记。可能吗


Tags: namedivbrowserbyfooelementsfindone
2条回答

CLASS_NAME

^{}Selenium支持的Locator Strategy之一,也是WebElement接口的属性,该接口获取并设置指定元素的class属性的值

要从<a>标记和父<div>标记中获取文本,您可以使用以下任一定位策略

  • 使用CLASS_NAME

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "koo")))])
    
  • 使用CSS_SELECTOR

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.foo a.koo")))])
    
  • 使用XPATH

    print([my_elem.text for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='foo']//a[@class='koo']")))])
    

您可以在元素中找到元素,并使用嵌套循环提取它们:

divs = browser.find_elements_by_class_name('foo')

for div in divs:
    elements = div.find_elements_by_tag_name('a')
    for element in elements:
        print(element.text)

相关问题 更多 >