【问题标题】:What are properties of find_element_by_class_name in selenium python?selenium python中find_element_by_class_name的属性是什么?
【发布时间】:2020-10-24 06:00:41
【问题描述】:
browser = webdriver.Firefox()
browser.get(url)
divs = browser.find_elements_by_class_name('class')

browser.find_element_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”标签。有可能吗?

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    你可以在一个元素中找到元素,用嵌套循环提取它们:

    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)
    

    【讨论】:

    • @frianH OP 想要想要得到&lt;divs&gt; 但你的回答给出了 class foo 很幸运啊?
    • 嗨@DebanjanB 我认为我们不需要辩论divs,它只是一个变量名。
    • "现在我想从我的 divs 数组中获取所有的 'a' 标签。有可能吗?"
    • 是的@DebanjanB,我认为上面的答案已经回答了主要问题,从divs 中的每个div 中获取所有a 标签。 CMIIW
    【解决方案2】:

    CLASS_NAME

    CLASS_NAMESelenium 支持的Locator Strategy 之一,也是WebElement 接口的属性,用于获取和设置指定元素的class 属性的值。

    要从 &lt;a&gt; 标签中获取 texts 父标签 &lt;div&gt; 您可以使用以下任一定位器策略

    • 使用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']")))])
      

    【讨论】:

    • 是的,我知道。但是我能以某种方式获取我的 div 中的锚标签的文本吗?我的意思是我想做类似的事情:divs.find_elements_by_tag_name('a')。但我不能这样做,因为我遇到了一个巨大的错误。
    • 那个错误说明了什么?是“AttributeError:‘list’对象没有属性‘find_elements_by_tag_name’吗?
    • 没关系,一切正常。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2022-06-29
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多