2

单数名称的函数和复数名称的函数有什么区别?

find_element_by_name
find_elements_by_name

find_element_by_tag_name
find_elements_by_tag_name
4

2 回答 2

6

我对 python 和 selenium 不是很熟悉,但大多数 DOM 函数的行为方式相同。

find_element_by_name应该返回一个名称属性与名称匹配的元素(找到的第一个实例)

<input name="username" type="text" value="Enter Username" />

find_elements_by_name将返回匹配元素的集合/数组

<input name="continue" type="submit" value="Login" />
<input name="continue" type="button" value="Clear" />

find_element_by_tag_name将类似只返回具有匹配标签名称的元素的第一个实例。

find_element_by_tag_name("a") // return the first anchor

find_elements_by_tag_name将再次返回匹配标签名称的集合/数组。

如果可以链接这些命令,或者在存储的元素上调用它们,则get_element(s)_*函数的结果将与其调用的节点相关。

<html>
  <body>
    <div>
       <a href="#1">Example 1</a>
       <a href="#2">Example 2</a>
    </div>
    <span>
       <a href="#3">Example 3</a>
       <a href="#4">Example 4</a>
    </span>
  </body>
</html>

例子

find_element_by_tag_name("a")==Example 1

find_element_by_tag_name("span").find_element_by_tag_name("a")==Example 3

对集合/数组的迭代

links = browser.find_elements_by_tag_name("a")

for link in links
 # link should be a Selenium WebElement?

如果有疑问,您可以转储整个结果以查看其中的内容。

调试 python 对象/属性

于 2012-12-30T12:08:21.713 回答
0

find_element_by_tag_name(tag_name)

具有单数名称的函数是find_element_by_tag_name(tag_name)通过标签名称查找元素并返回该元素。

  • 细节:

    find_element_by_tag_name(tag_name)        
    
    Args :  
        name - name of html tag (eg: h1, a, span)
    
    Returns :   
        WebElement - the element if it was found
    
    Raises :    
        NoSuchElementException - if the element wasn’t found
    
  • 用法 :

    element = driver.find_element_by_tag_name("h1")
    

find_elements_by_tag_name(tag_name)

具有复数名称的函数是find_elements_by_tag_name(tag_name)通过标签名称查找元素并返回一个列表。

  • 细节:

    find_elements_by_tag_name(tag_name): 
    
    Args :  
        name - name of html tag (eg: h1, a, span)
    
    Returns :
        list of WebElements - a list with elements if any was found. An empty list if not
    
  • 用法 :

    elements = driver.find_elements_by_tag_name("h1")
    
于 2020-03-17T16:10:42.467 回答