在规范中似乎表明element IDs are meant to be numbers。但是,Firefox和Chrome(在w3c模式下)都返回c87e08da-358e-45a8-b75c-c17cde92f606
之类的内容。当不在w3c模式时,Chrome会返回类似45.32131231423424324324254245
的内容。
所以...他们的意思是数字吗?或者,那些字符串代表数字?如何将它们转换回Integer?
答案 0 :(得分:0)
正如您所提到的element IDs are meant to be numbers
,直接答案是否。
由于Firefox(符合W3C标准)返回类似 c87e08da-358e-45a8-b75c-c17cde92f606 的内容,因此UUID
(Universally Unique IDentifier
)也称为{{3 (Globally Unique IDentifier
)是根据GUID
标准化的格式,用于标识W3C WebDriver Specs
UUID
强> UUID
是一个标识符,在空间和时间方面都是唯一的,与UUIDs
的空间有关。因此,UUID
可用于多种用途,从标记具有极短寿命的对象到可靠地识别网络中的非常持久的对象。
UUID
的内部表示是内存中特定的位序列。为了将UUID准确地表示为URN,必须将比特序列转换为字符串表示。每个字段都被视为一个整数,其值打印为零填充的十六进制数字字符串,其中最重要的数字位于第一位。
UUID
的典型字符串表示形式为: uuid
:
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
通常使用三种算法来维护生成的UUIDs
的唯一性:
因此,根据这些机制生成的UUIDs
将始终与已经或将要分配的所有其他UUIDs
唯一,并且casting
他们不会回到整数,直到 WebDriver
变体成功与相应的UUIDs
对协商 Browsers
。
答案 1 :(得分:0)
你混淆了两件不同的事情。规范指的是一个数字,它是页面上帧集合的索引。您的示例是GUID,它们只是页面上引用元素的唯一标识符。这两者不一样也不可互换。
从您提供的链接(#5下)
id是一个Number对象
这是在使用“切换到帧”的上下文中。这允许API接受一个数字(它是帧集合的索引)来访问一个帧。例如,在Java中,您将使用
driver.switchTo().frame(0)
其中0
是id
,它是一个“数字对象”,在您引用的规范部分中引用。这会将驱动程序上下文切换到页面上的第一个(第0个)帧。还有其他方法可以切换到一个帧,例如使用已知的Web元素。这是规范中列出的第三种方法(也在#5下)
id表示网络元素
然后规范定义了如何处理Web元素的各种情况。
您在问题中引用的数字只是当前引用的网络元素的GUID或唯一标识符,如评论中描述的FlorentB。您无法将这些数字/ GUID传递到API以切换帧等。
如果您想了解如何在Java中实现此功能,您可以查看文档here。