单数名称的函数和复数名称的函数有什么区别?
find_element_by_name
find_elements_by_name
和
find_element_by_tag_name
find_elements_by_tag_name
单数名称的函数和复数名称的函数有什么区别?
find_element_by_name
find_elements_by_name
和
find_element_by_tag_name
find_elements_by_tag_name
我对 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?
如果有疑问,您可以转储整个结果以查看其中的内容。
具有单数名称的函数是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):
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")