首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我在传入':css‘时,从watir-webdriver方法"assert_valid_as_attribute“得到一个”invalid attribute“异常?

在传入':css'时,从watir-webdriver方法"assert_valid_as_attribute"得到一个"invalid attribute"异常的原因是':css'不是一个有效的属性名称。在watir-webdriver中,"assert_valid_as_attribute"方法用于检查传入的属性名称是否有效。当传入的属性名称无效时,该方法将抛出"invalid attribute"异常。

在Watir中,属性名称通常是HTML元素的属性,用于描述元素的特征或状态。例如,属性名称可以是id、class、name等。这些属性名称是由HTML规范定义的,并且在Watir中可以使用。

然而,':css'不是一个有效的HTML属性名称。它看起来更像是一个用于指定CSS选择器的特殊标记。CSS选择器是一种用于选择HTML元素的语法,但它不是HTML元素的属性。

因此,当你将':css'作为属性名称传递给"assert_valid_as_attribute"方法时,它会检测到这是一个无效的属性,并抛出"invalid attribute"异常。

要解决这个问题,你应该传递一个有效的HTML属性名称作为参数,而不是使用':css'。如果你想使用CSS选择器来定位元素,可以考虑使用Watir中提供的其他方法,例如:css方法。

补充说明:Watir是一种用于自动化Web浏览器的Ruby库,它可以模拟用户与Web应用程序的交互。watir-webdriver是Watir的一个实现,它使用WebDriver协议与浏览器进行通信。这些工具常用于Web自动化测试和爬虫等任务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

backbond Model方法(set)

backbond的Model,其中存在一些操作属性的方法,而在这些方法中,最重要的就是set方法,其余的方法大部分都基于这个方法实现的,backbond开发版中,也说了该方法是model中的核心方法。...set方法,是否进行其他操作。..._changing就是false,那么无论如何,changing都是false,为什么还要设置一个changing变量呢? 分析源码的最大一个好处就是,他的代码肯定不是没有意义的!..._pengding是一个对象,而while({})是可以正常执行的。 该语句的作用就是当调用set方法,属性没有改变,即this....也就是说,当我们change事件的回调函数里再次或多次调用了set方法,那么change事件都会被触发两次,多次调用也是两次,具体原因根据以上思路可以得到结果。

51730
  • 真丢人,函数都不会写?

    (这种方式违背了分隔指令与查询思想): 图片 图片 使用异常替代返回错误码 图片 错误码可能由一个共有的类型去管理。...例如: enum Error{ OK, INVALID, NO_SUCH, LOCKED, OUT_OF_RESOURCES }; 使用异常替代错误码,新异常就可以异常类派生出来...写论文或文章,你先想什么就写什么,然后再打磨它。 初稿也许粗陋无序,你就斟酌推敲,直至达到你心目中的样子。 写函数,一开始都冗长而复杂。有太多缩进和嵌套循环。有过长的参数列表。...然后打磨这些代码,分解函数、修改名称、消除重复。缩短和重新安置方法。有时 还拆散类。同时保持测试通过。 最后,遵循本章列出的规则,组装好这些函数。 并不从一开始就按照规则写函数。...想没人做得到。 以上总结自 《代码整洁之道》第三章--函数。 By the way, 示例代码使用ChatGPT生成。哈哈哈!---

    16000

    Weblogic漏洞反序列化(CVE-2019-2725)分析

    调试器中查看ServerDispatcher对象var5属性值,发现methodName属性中赋值了onAsyncDelivery方法名,调用dispatch()方法将调用上述服务中定义的该方法:...经readObject()方法反序列化恶意对象后通过ProcessBuilder类的start()方法断点处查看command属性,发现成功传入“calc”字符串: ?...首先来看CVE-2017-3506补丁文件,其实现方法简单来说就是调用startElement方法解析XML的过程中,如果解析到Element字段值为Object就抛出异常: private void...和上述不同点在于本次更新中官方将object、new、method关键字继续加入到黑名单中,一旦解析XML元素过程中匹配到上述任意一个关键字就立即抛出运行时异常。...寻找利用链的过程中发现UnitOfWorkChangeSet类构造方法中直接调用了JDK原生类中的readObject()方法,并且其构造方法的接收参数恰好是字节数组,这就满足了上一个补丁中array

    2.3K30

    windows错误处理

    调用windows API函数会首先对我们传入的参数进行校验,然后执行,如果出现什么情况导致函数执行出错,有的函数可以通过返回值来判断函数是否出错,比如对于返回句柄的函数如果返回NULL 或者INVALID_HANDLE_VALUE...,则函数出错,对于返回指针的函数来说如果返回NULL则函数出错,但是对于有的函数返回值来看根本不知道是否成功,或者为什么失败,对此windows提供了一大堆的错误码,用于标识API函数是否出错以及出错原因...windows中为每个线程准备了一个存储区,专门用来存储当前API执行的错误码,想要获取这个错误码可以通过函数GetLastError。...windows上一般遵循这样的格式: 位 31~30 29 28 27~16 15~0 用途 严重性 系统错误码 保留位 设备码 异常代码 含义 0 成功 1供参考2警告3错误 0系统定义1自定义 总为...,第二个参数是共便利多少个栈信息,第三个参数是一个缓冲区,用来存储得到的栈信息,具体就是栈的地址。

    81820

    以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析

    解读之后的代码之前,有个疑问,这些操作如果有一步没有成功,还有必要继续往下走么?怎么就没一个判断?放下这个问题,我们看之后的代码。         ...因为如果新建一个与压缩包同名的“文件夹”,GetFileAttributesW将返回FILE_ATTRIBUTE_DIRECTORY,这将导致这个错误的逻辑认为该文件夹是一个压缩文件,从而导致之后的逻辑出现处理异常...觉得,可以PrepareRes函数中,新增一段对debug情况的处理:debug情况下我们应该获取工程res目录下一个特定的文件夹,该文件夹保存了未压缩的各个文件。...以上我们讨论了如何使用Zlib获取界面压缩包中文件信息的方法。现在我们再看下如何使用Zlib界面内存块中获取压缩后的文件信息。 ?         ...为什么不加载,我们之后会在探索《以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题》中“如何读取保存界面元素属性”问题,对这个问题作出解释。

    97420

    【最全BUG修复宝典】肝!你遇到的BUG解决方案全在这了!

    你好呀,是灰小猿,一个超会写bug的程序猿!...3程序中,抛出异常的格式如下: raise Exception(args) 例如,下面两行代码演示了两种版本抛出异常方法: raise ValueError, e # Python 2 .x 的方法...另外,上面的报错还有一个原因经常遇到,就是无首行缩进,例如在编写if语句在后面加冒号,如果直接换行, 好多代码编辑器会自动首行缩进。...,在上述代码中,rangeO 函数期望的传入参数是整型(integer),其但是却传入的参为元组(tuple) ,解决方法是将入参元组t改为元组个数 整型len(t)类型即可,例如将上述代码中的range...解决方法是更改模式mode,修改为写入模式权限w+: f = open("hello. py", "w+") f. write("test") 5、解决“SyntaxError:invalid syntax

    1.3K31

    全网最值得收藏的Python常见报错及其解决方案,再也不用担心遇到BUG了!

    你好呀,是灰小猿,一个超会写bug的程序猿!...1、print 变成了 print() Python2版本中,print是作为一个语句使用的, Python3版本中print。作为一个函数出现。下面通过两段代码来展示两个版本的区别。...另外,上面的报错还有一个原因经常遇到,就是无首行缩进,例如在编写if语句在后面加冒号,如果直接换行, 好多代码编辑器会自动首行缩进。...,在上述代码中,rangeO 函数期望的传入参数是整型(integer),其但是却传入的参为元组(tuple) ,解决方法是将入参元组t改为元组个数 整型len(t)类型即可,例如将上述代码中的range...解决方法是更改模式mode,修改为写入模式权限w+: f = open("hello. py", "w+") f. write("test") 5、解决“SyntaxError:invalid syntax

    1.4K01

    异常处理(第十一章)内有福利

    异常处理 常见的异常处理 AssertionError;断言语句失败 assert测试程序的时候 代码植入检查点 >>> my_list = ["tianjun"] >>> assert len(my_list...print("领绕错了,报错了") ... 领绕错了,报错了 >>> 根据不同的异常设置多个except >>> try: ... sum = 1 + "1" ......assert语句失败 AttributeError 特性应用或赋值引发(试图访问一个对象没有的属性) IOError 试图打开不存在的文件或者无全新的文件等操作...,就会引发(输入输入异常,基本是无法打开文件) ImportError 无法引入模块或包,基本是路径问题 IndexError 使用系列中不存在的索引引发(...试图访问一个还未被设置的全局变量,基本上是由于另有一个同名的全局变量 ValueError 传入一个不被期望的值,即使类型正确 ZeroDivisonError 除数为零发生的一个异常

    49820

    segment 寄存器的真实结构

    上图是画的 Segment Registers 内部结构图,这分为 4 个部分: Selector Attribute Limit Base 图中已经标出灰色部分是 processor 内部使用的,仅仅只有...范围 0 - 3 级 S 属性:S = 0 是系统数据 segment, S = 1 用户 segment Type 属性:代表 segment 类别 real mode 下 segment registers...register 之间也存在差别: 2.1.1 CS 寄存器 CS 寄存器里新增了一个属性位: L 属性: 它用来指示 processor 当前处于 64 bit 模式还是 compatibility...模式: 当 CS.L = 1 ,processor 处于 64 bit 模式 当 CS.L = 0 ,processor 处于 compatibility 横式 64 位下 CS 寄存器只有下面的一些属性位是有效的...mode 下 base 的更新 protected mode 下,base 的更新是加载 descriptor 进入 registers 发生:base 被更新为 segment descriptor

    1.7K20

    【基础系列】Canvas专题

    1 Canvas接口元素定义 1.1 getContext()方法         为了canvas上绘制,你必须先得到一个画布上下文对象的引用,用本方法即可完成这一操作,格式如下: context...,image参数可以为img,canvas,video元素中的任一个,如果不满足此条件,则抛出TYPE_MISMATCH_ERR异常,如果图片编码未知或没有图像数据,则抛出INVALID_STATE_ERR...每个子路径包含一个或多个点列表(这些点组成直的或弯曲的线段),和一个标识子路径是否闭合的标志。少于两个点的子路径绘图被忽略。...2.8.1.2 context. closePath()         ClosePath方法绘图上下文如果没有子路径,什么也不做;否则,它先把最后一个子路径标示为闭合,然后建立一个包含最后子路径的第一个点的子路径...绘制参数的含义可以参看下图:     异常:         如果第一个参数不是指定的元素类型,抛出一个TYPE_MISMATCH_ERR异常,如果图片不能进行解码,则抛出INVALID_STATE_ERR

    36931

    重温《单元测试的艺术》,总结常用知识点

    编写单元测试,我会对代码更有信心。已测试的代码中更易于添加功能或修复 Bug,因为代码发生更改时,单元测试起着安全网的作用。 前几个月重温了单元测试的艺术。...不过更喜欢MSTest V2,因为旧的MSTest升级过来几乎没有学习成本,也不用向上司解释为什么要换框架。...5.2 捕获预期的异常 以前很流行使用ExpectedExceptionAttribute检查异常,代码如下: [TestMethod()] [ExpectedException(typeof(ArgumentNullException...0,然后用Do抛出一个异常。...8.2 如何测试私有方法 私有方法通常比较难测试,不过你可以这么想:私有方法不会无缘无故地存在,最终某个地方有公共方法会调用这个私有方法

    1.5K31

    Selenium的使用方法简介

    多个节点 如果查找的目标在网页中只有一个,那么完全可以用find_element()方法。但如果有多个节点,再用find_element()方法查找,就只能得到一个节点了。...比较常见的用法有:输入文字用send_keys()方法,清空文字用clear()方法,点击按钮用click()方法。...()方法,然后传入想要获取的属性名,就可以得到它的值了。...选项卡管理 访问网页的时候,会开启一个个选项卡。Selenium中,我们也可以对选项卡进行操作。...这里我们将第二个选项卡代号传入,即跳转到第二个选项卡,接下来第二个选项卡下打开一个新页面,然后切换回第一个选项卡重新调用switch_to_window()方法,再执行其他操作即可。 15.

    5K61

    【源码】optimal-select 是如何获取到 HTML 元素指纹(CSS Selector)

    前言 最近在做一个项目,要求获取到一个 HTML 元素指纹。比如,点击一个元素,就能返回一个该元素的 CSS selectors 或者 xpath。...(not "${typeof element}")`) } 接下来是最主要的 match 方法,主要是定义 match.js 中,用来匹配单个元素的 CSS Selector。...获取多个元素的 CSS Selector 其实在 select.js 中,有个 getQuerySelector 的方法,会根据传入的值进行不同的方法的调用,假如是传入的是多个 Node 的时候,就会自动调用...,比如使用 sort 对优先级进行排序 通过从当前元素开始往上遍历到 root 结束去确定一个元素唯一的 CSS Selector 的。...其中会做一些优化(见 optimize.js 文件),优化后会使用 querySelectorAll 方法,确定其正确性 通过先获取到元素列表公共祖先元素的 CSS Selector,并获取到元素列表的公共属性

    1.3K20

    Dora.Interception: 一个为.NET Core度身定制的AOP框架

    二、Dora.Interception的设计目标 当初设计Dora.Interception框架给自己确定的几个目标: Dora.Interception一个基于运行时(Run Time),而不是针对编译...如果后续调用传入了相同的参数,并且之前的缓存尚未过期,缓存的结果将直接作为方法的返回值,从而避免了针对目标方法的重复调用。...我们可以利用这个上下文对象得到Proxy对象和目标对象,代表当前调用方法的MethodInfo对象,以及传入的输入参数等。除此之外,我们也可以利用这个上下文直接设置方法的返回值或者输出参数。...假设我们定义一个ExceptionHandlingInterceptor来实施自动化异常处理,当我们创建这个Interceptor的时候需要提供注册的异常处理类型的名称,那么我们需要采用如下的形式来定义对应的这个...如下的代码片段可以看出,GetCurrentTime方法总是返回实时的时间,但是由于应用了CaheReturnValueAttribute,如果CacheInterceptor生效,返回的时间缓存过期之前总是相同的

    70760

    学Python不用培训班,一篇文章带你入门

    但问题是Python是一个弱类型的语言,如果我们一个函数当中得到两个变量,是无法直接判断它们的类型的。这就导致了同样的计算符可能会得到不同的结果,这非常蛋疼。...print会输出一个字符串,如果传入的不是字符串会自动调用__str__方法转成字符串进行输出。...如果使用get方法则不会引起异常,只会得到一个None: # Looking up a non-existing key is a KeyError filled_dict["four"] # KeyError...并且如果文件异常,还会触发异常。这个时候我们可以使用with语句来代替这部分处理,使用with会自动with块执行结束或者是触发异常关闭打开的资源。...都是指类经过实例化之后得到的对象。 继承 继承可以让子类继承父类的变量以及方法,并且我们还可以子类当中指定一些属于自己的特性,并且还可以重写父类的一些方法

    85920

    XMLHttpRequest使用指南大全

    接下来将站在使用者的角度,以问题的形式介绍xhr的基本使用。 对每一个问题涉及到的知识点都会进行比较细致地介绍,有些知识点可能是你平时忽略关注的。...有2种方法可以实现,一个是level 1就提供的overrideMimeType()方法,另一个是level 2才提供的xhr.responseType属性。...那么responseType可以设置为哪些格式呢,简单做了一个表,如下: 值 xhr.response 数据类型 说明 “” String字符串 默认值(不设置responseType) “text...如何发一个同步请求 xhr默认发的是异步请求,但也支持发同步请求(当然实际开发中应该尽量避免使用)。到底是异步还是同步请求,由xhr.open()传入的async参数决定。...注意,只有发生了网络层级别的异常才会触发此事件,对于应用层级别的异常,如响应返回的xhr.statusCode是4xx,并不属于Network error,所以不会触发onerror事件,而是会触发onload

    1.3K30
    领券