Webdrivers中是否有元素ID号?

时间:2018-01-23 14:27:12

标签: selenium webdriver

在规范中似乎表明element IDs are meant to be numbers。但是,Firefox和Chrome(在w3c模式下)都返回c87e08da-358e-45a8-b75c-c17cde92f606之类的内容。当不在w3c模式时,Chrome会返回类似45.32131231423424324324254245的内容。

所以...他们的意思是数字吗?或者,那些字符串代表数字?如何将它们转换回Integer?

2 个答案:

答案 0 :(得分:0)

正如您所提到的element IDs are meant to be numbers,直接答案是

由于Firefox(符合W3C标准)返回类似 c87e08da-358e-45a8-b75c-c17cde92f606 的内容,因此UUIDUniversally Unique IDentifier)也称为{{3 (Globally Unique IDentifier)是根据GUID标准化的格式,用于标识W3C WebDriver Specs

之后的元素

UUID

UUID 是一个标识符,在空间和时间方面都是唯一的,与UUIDs的空间有关。因此,UUID可用于多种用途,从标记具有极短寿命的对象到可靠地识别网络中的非常持久的对象。

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

实施例

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

生成UUID

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

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

因此,根据这些机制生成的UUIDs将始终与已经或将要分配的所有其他UUIDs唯一,并且casting他们不会回到整数,直到 WebDriver 变体成功与相应的UUIDs对协商 Browsers

答案 1 :(得分:0)

你混淆了两件不同的事情。规范指的是一个数字,它是页面上帧集合的索引。您的示例是GUID,它们只是页面上引用元素的唯一标识符。这两者不一样也不可互换。

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

  

id是一个Number对象

这是在使用“切换到帧”的上下文中。这允许API接受一个数字(它是帧集合的索引)来访问一个帧。例如,在Java中,您将使用

driver.switchTo().frame(0)

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

  

id表示网络元素

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

您在问题中引用的数字只是当前引用的网络元素的GUID或唯一标识符,如评论中描述的FlorentB。您无法将这些数字/ GUID传递到API以切换帧等。

如果您想了解如何在Java中实现此功能,您可以查看文档here