Selenium Webdrivers中是否有元素ID号?

Selenium Webdrivers中是否有元素ID号?,selenium,webdriver,Selenium,Webdriver,在说明书中,似乎说明了这一点。但是,Firefox和Chrome(w3c模式)都返回类似于c87e08da-358e-45a8-b75c-c17cde92f606的内容。当不处于w3c模式时,Chrome返回类似于45.32131231423424324324254245 所以。。。它们是数字吗?或者,这些字符串代表数字吗?如何将它们转换回整数 正如您提到的元素ID应该是数字,直接的答案是否 由于Firefox(与W3C兼容)返回类似于c87e08da-358e-45a8-b75c-c17cde

在说明书中,似乎说明了这一点。但是,Firefox和Chrome(w3c模式)都返回类似于
c87e08da-358e-45a8-b75c-c17cde92f606的内容。当不处于w3c模式时,Chrome返回类似于
45.32131231423424324324254245


所以。。。它们是数字吗?或者,这些字符串代表数字吗?如何将它们转换回整数

正如您提到的
元素ID应该是数字
,直接的答案是

由于Firefox(与W3C兼容)返回类似于c87e08da-358e-45a8-b75c-c17cde92f606的内容,因此它是(
通用唯一标识符
)也称为(
全局唯一标识符
)的标准格式,用于标识

UUID
UUID
是一个标识符,相对于所有
UUID
的空间而言,它在空间和时间上都是唯一的。因此,
UUID
可以用于多种目的,从标记生命周期极短的对象到可靠地识别网络中非常持久的对象

UUID
的内部表示是内存中特定的位序列。要将UUID准确地表示为URN,必须将位序列转换为字符串表示。每个字段都被视为一个整数,并将其值打印为一个以最高有效位开头的零填充十六进制数字字符串

例子
UUID的典型字符串表示形式是:
UUID
f81d4fae-7dec-11d0-a765-00a0c91e6bf6

生成uuid 通常使用三种算法来维护生成的
uuid
的唯一性:

  • 利用网络连接主机上可用的IEEE 802 MAC地址的唯一值的算法
  • 第二种算法使用伪随机数生成器
  • 第三种方法使用加密哈希和特定于应用程序的文本字符串

因此,,根据这些机制生成的
uuid
将始终与已分配或将分配的所有其他
uuid
唯一,并且在
WebDriver
变体成功协商之前,不存在
将它们转换回整数的问题
uuid
使用相应的一对
浏览器

会混淆两种不同的东西。规范所指的数字是页面上框架集合的索引。您的示例是guid,它们只是页面上被引用元素的唯一标识符。两者既不相同也不可互换

从您提供的链接(在#5下)

id是一个数字对象

这是在使用Switch-To-Frame的上下文中实现的。这允许API接受一个数字(它是帧集合的索引)来访问帧。例如,在Java中,您将使用

driver.switchTo().frame(0)
其中
0
id
,它是在您引用的规范部分中引用的“数字对象”。这会将驱动程序上下文切换到页面上的第一(0)帧。还有其他切换到框架的方法,例如使用已知的web元素。这是规范中列出的第三种方法(也在#5下)

id表示一个web元素

然后,规范定义了如何处理web元素的各种情况

您在问题中提到的数字只是当前引用的web元素的GUID或唯一标识符,如注释中所述的FlorentB。您不能将这些数字/GUID传递到API以切换帧等


如果您想了解这是如何在Java中实现的,您可以查看文档。

这个数字是什么并不重要。重要的是它的独特性在Selenium 3之前没有任何规则。规则现在声明该字符串必须是一个字符串。Chrome还不兼容,通过增加它和增加浮动时间戳来建立这个数字。我意识到这一点。但是规范清楚地说明了
,如果id不为null、数字对象或表示web元素的对象,则返回错误,错误代码没有这样的框架。
——这是不正确的吗?我可以打开一个关于规范的问题吗?规范要求什么和驱动程序做什么是两件不同的事情。请记住,规范是一个不断发展的草案。重要的是客户机和驱动程序是否相互理解。在本例中,它更像是一个命名约定问题,对API没有影响。请注意,从
中,如果id不为null,则数字对象或表示web元素的对象返回错误,错误代码不包含此类帧。
,id指的是DOM id,
数字对象
指的是索引,webelement指的是您正在谈论的引用。所以这里没有问题。@FlorentB
id
不是DOM id,它是切换到帧方法根据规范接受的参数名称。如果
id
为空,则执行X。如果
id
是数字对象,则执行Y。。。等等我同意你的看法,这里没有问题。这是
id
作为数字对象的参数名与引用元素的GUID之间的误解。