草庐IT

Selenium WebDriver定位策略(一)

BaiXuePrincess 2023-07-27 原文

WebDriver中使用的定位策略列表:


下面以百度搜索输入框为例进行讲解

1、按ID定位策略

通过元素的id属性来定位,前提:元素必须有id属性

driver.find_element_by_id("kw")

2、按名称查找策略

通过元素的name属性来定位,前提:元素必须有name属性

driver.find_element_by_name("wd")

3、按类名定位策略

通过元素的class属性来定位,前提:元素必须有class属性

driver.find_element_by_class_name("s_ipt")

4、按标签名称定位策略

通过元素的tag来定位

driver.find_element_by_tag_name("input")

5、通过链接文本定位策略

通过元素标签对之间的文本信息来定位,全部匹配,定位超链接文本(<a>标签<a>)
以百度登录为例

driver.find_element_by_link_text("登录")

6、通过部分链接文本定位策略

通过元素标签对之间的部分文本信息来定位,模糊匹配,需传a标签局部文本,能表达唯一性

以百度登录为例

driver.find_element_by_partial_link_text("登")

7、通过CSS定位策略

CSS使用选择器来为页面元素绑定属性

find_element_by_css_selector("#kw") 

8、通过XPath定位策略

使用路径表达式来选取 XML 文档中的节点或者节点集

driver.find_element_by_xpath("//*[@id='kw']")

有关Selenium WebDriver定位策略(一)的更多相关文章

  1. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  2. ruby-on-rails - 覆盖 Controller 中的 protect_from_forgery 策略 - 2

    我想使用两种不同的protect_from_forgery策略构建一个Rails应用程序:一种用于Web应用程序,一种用于API。在我的应用程序Controller中,我有这行代码:protect_from_forgerywith::exception为了防止CSRF攻击,它工作得很好。在我的API命名空间中,我创建了一个继承self的应用程序Controller的api_controller,它是API命名空间中所有其他Controller的父类,我将上面的代码更改为:protect_from_forgery:null_session.遗憾的是,我在尝试发出POST请求时遇到错误:“

  3. 最强Http缓存策略之强缓存和协商缓存的详解与应用实例 - 2

    HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地,以便下次请求时能够直接从缓存中获取资源,从而减少网络请求次数,提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。一.强缓存强缓存是指浏览器直接从本地缓存中获取资源,而不需要向web服务器发出网络请求。这是因为浏览器在第一次请求资源时,服务器会在响应头中添加相关缓存的响应头,以表明该资源的缓存策略。常见的强缓存响应头如下所述:Cache-ControlCache-Control响应头是用于控制强制缓存和协商缓存的缓存策略。该响应头中的指令如下:max-age:指定该资源在本地缓存的最长有效时间,以秒为单位。例如:Ca

  4. ruby - 使用 Ruby Net 实现重新连接策略 - 2

    我正在开发一个将XML发布到某些网络服务的小型应用程序。这是使用Net::HTTP::Post::Post完成的。但是,服务提供商建议使用重新连接。类似于:第一个请求失败->2秒后重试第二个请求失败->5秒后重试第三次请求失败->10秒后重试...这样做的好方法是什么?简单地在循环中运行以下代码,捕获异常并在一定时间后再次运行?或者还有其他聪明的方法吗?也许Net包甚至有一些我不知道的内置功能?url=URI.parse("http://some.host")request=Net::HTTP::Post.new(url.path)request.body=xmlrequest.con

  5. 打通源码,高效定位代码问题|云效工程师指北 - 2

    大家好,我叫胡飞虎,花名虎仔,目前负责云效旗下产品Codeup代码托管的设计与开发。代码作为企业最核心的数据资产,除了被构建、部署之外还有更大的价值。为了帮助企业和团队挖掘更多源代码价值以赋能日常代码研发、运维等工作,云效代码团队在大数据和智能化方向进行了一系列的探索和实践(例如代码搜索与推荐),本文主要介绍我们如何通过直接打通源代码来提高研发与运维效率。随着微服务架构的流行,一个业务流程需要多个微服务共同完成。一旦出现问题,运维人员在面对数量多、调用链路复杂的情况下,很难快速锁定导致问题发生的罪魁祸首:代码。为了提高排查效率,目前常见的解决方案是:链路跟踪+日志分析工具相结合。即通过链路跟踪

  6. ruby - 解释这个原始文本 - 一种策略? - 2

    我有这个原始文本:________________________________________________________________________________________________________________________________PosCarCompetitor/TeamDriverVehicleCapCLLapsRace.TimeFastest...Lap16JasonClementsJasonClementsBMWM33200109:48.571030:57.3228*242DavidSkillenderDavidSkillenderHo

  7. ruby-on-rails - 创建自定义设计策略 - 2

    现在已经为此奋斗了一段时间,不确定为什么它不起作用。要点是希望将Devise与LDAP结合使用。除了身份验证外,我不需要做任何事情,所以除了自定义策略外,我不需要使用任何东西。我根据https://github.com/plataformatec/devise/wiki/How-To:-Authenticate-via-LDAP创建了一个据我所知,一切都应该正常工作,除了每当我尝试运行服务器(或rake路由)时,我得到一个NameErrorlib/devise/models.rb:88:in`const_get':uninitializedconstantDevise::Models:

  8. ruby-on-rails - 葡萄错误处理策略? - 2

    我正在使用Grape和Rails创建RESTAPI。我有基本的架构,我正在寻找“清理”东西的地方。其中一个地方是错误处理/处理。我目前正在为整个API修复root.rb(GRAPE::API基类)文件中的错误。我格式化它们,然后通过rack_response发回错误。一切正常,但root.rb文件变得有点臃肿,所有错误都被修复,其中一些有需要完成的特殊解析。我想知道是否有人制定了一个好的错误处理策略,以便可以将其移出到它自己的模块中,并使root.rb(GRAPE::API基类)相当精简。我很想创建一个错误处理模块并为每种类型的错误定义方法,例如...moduleAPImoduleEr

  9. ruby-on-rails - Ruby on Rails 和 Twitter OAuth 的测试策略 - 2

    我正在开发一个利用twitteroauth的应用程序,但在试图弄清楚如何测试twitteroauth时遇到了障碍。特别是尝试使用Cucumber和Webrat/Selenium来测试功能——注册/登录过程中的某些步骤在用户是否授予对应用程序的oauth访问权限等方面表现不同。有没有人在他们的RubyonRailsCucumber功能(或与此相关的任何其他测试框架)中成功模拟或stub部分或全部TwitterOAuth系统?任何帮助将不胜感激。 最佳答案 OP已经一年多了,但我最近发现这篇关于使用TwitterAuth和Cucumbe

  10. ruby - 在 Mac 上定位 "irbrc"文件 - 2

    我看到很多很酷的东西可以添加到我的Ruby控制台中。例如,一个好的列表是“My.irbrcforconsole/irb”。我用谷歌搜索,但我只找到了网络日志,上面写着人们在他们的.irbrc中添加了什么gem。没有人说在哪里可以找到它。我找不到“irbrc”。我打开了我的主文件夹,如果我输入IRB,它会转到Ruby控制台,但我找不到这个文件。谁能帮我找到它? 最佳答案 这是一个irbrc点文件,因此您需要在您的主目录中ls-a才能找到它。如果它不在那里,只需创建一个.irbrc文件。我的很简单,但这就是我的内容:require'ru

随机推荐