Selenium包含findElement函数,如。。。你知道吗
。按元素查找元素
id
link_text
partial_link_text
name
class_name
tag_name
css_selector
xpath
很明显,由于HTML页面是如何创建的,有些页面受到设计的限制,比如id、link\u text、name、tag\u name,因为并非所有的标签都包含id、link\u text等。。。然而,css\u选择器和xpath可以做几乎所有这些可以做的事情,然后是一些,但是似乎它们只能与什么交互。例如,某些按钮可能无法使用xpath单击,但可以通过css\u选择器单击。你知道吗
所以我想知道,什么时候一个要使用一个而不是另一个(特别是xpath或css\u选择器)?你知道吗
其他函数(id、link\utext等)是否非常有用,因为(至少)我发现xpath/css\u选择器也可以这么做?你知道吗
在xpath/css选择器上使用链接文本有什么好处吗?你知道吗
这个问题已经在许多论坛上被提出和回答,包括
stackoverflow.com
和其他不同形式的论坛。考虑到所有这些因素,如果我们对定位器进行优先排序,列表如下:id
:选择具有指定id
属性的元素。你知道吗name
:选择具有指定name
属性的第一个元素。你知道吗link_text
:选择包含与指定的Link Text
匹配的Text
的链接(锚定标记)元素。你知道吗partial_link_text
:选择包含与指定的Partial Link Text
匹配的Text
的链接(锚定标记)元素。你知道吗tag_name
:使用Tag Name
定位元素。你知道吗class_name
:使用Class Name
定位元素。你知道吗css_selector
:使用css selectors
选择元素。你知道吗xpath
:使用XPath
表达式定位元素。你知道吗所以现在的问题是什么是新的?你知道吗
答案是硒最近进化了很多。} 。在
WebDriver
现在是^{Selenium
内的事物变化非常快。不仅仅是选择定位器。我们需要使用一个定位器,它将:Uniquely identify an element.
The performance of the locator must be optimized.
记住这两个因素,最好的策略是模拟DOM。^{} 确实提到了定位器列表,如下所示:
所以判决是明确和简洁的。你知道吗
根据我的经验,CSS是最好的选择,因为它可以简洁,有很好的文档记录,而且web开发人员可能对它有更多的经验和接触。你知道吗
id、name、tag\u name和class\u name都可以用简单的CSS轻松复制,因此我避免显式使用它们。你知道吗
例如
我的id
姓名
标签名称
班级名称;。我的班级
XPath的使用经常被人诟病;被标记为缓慢和不稳定。但是我不同意这个观点。你知道吗
当我采访人们时,当他们说他们避免使用Xpath时,我会畏缩,因为Xpath既慢又脆。速度不再是一个问题,xpath只会像编写它的人一样脆弱。但是,我更喜欢CSS选择器的语法,所以对于大多数用例,我会选择XPath。你知道吗
有3种情况下XPath是更好的选择
多个CSS选择器可以替换为一个XPath查询(例如find element,然后在一个XPath中遍历子元素)
XPath可以基于文本进行选择,而作为CSS选择器不能
XPath允许您遍历DOM树,如果您只能通过其子控件标识控件,那么这将非常有用
如果可能的话,我总是避免按文本选择,但是如果必须的话,我更喜欢使用XPath而不是内置的链接文本和部分链接文本方法,因为XPath查询允许我更具表现力,允许我选择更多的锚定标记。你知道吗
最后,在使用XPath时有一个问题是“class”被视为一个文本字符串,而不是CSS选择器所支持的类名数组
相关问题 更多 >
编程相关推荐