Atoms 已加入 Selenium IDE

正如 Simon 在其「原子化:原因?」和「原子化:方法」中提到的,Selenium 和 WebDriver 合併的一部分是為了在這兩者之間共享通用程式碼。

正如 Simon 在 「原子化:原因?」「原子化:方法」 中提到的,Selenium 和 WebDriver 合併的一部分是為了在這兩者之間共享通用程式碼。 並且從 Selenium IDE 的 1.0.10 版本開始,此合併的程式碼「atoms」現在已包含在內。

此版本的早期使用者注意到,驅動 assertAttribute 和 verifyAttribute 的 atom 導致他們的腳本中斷。 這篇文章解釋了「原因」,並提出了修復方法。

HTML 規格具有布林屬性的概念,布林屬性是僅透過存在而非透過其值來執行某些操作的屬性;checkedselected 是這類屬性的兩個範例。 或者,您可以為這些布林屬性賦予與其名稱相同的值 (checked="checked"),您的頁面仍然會驗證,但實際上,瀏覽器只關心屬性是否存在。

在 1.0.10 之前,人們經常會執行類似以下的操作

  assertAttribute | checkbox@checked | checked

這會擷取 ID 或名稱為 checkbox 的核取方塊上 checked 屬性的值,如果該值未核取,則腳本會失敗。

但在 1.0.10 中,即使已核取,也會失敗。 這是因為 checked 是一個布林屬性,現在將傳回 true,否則會擲回例外,指出該屬性不存在。 重新執行上述步驟以檢查布林屬性是否已設定,結果如下

  assertAttribute | checkbox@checked | true

值得慶幸的是,與布林屬性的絕大多數實際互動都集中在 checked、disabled、hidden 和 selected 上,在這些情況下,使用 assertAttribute 並非真正正確的做法。 相反地,Selenium API 提供了包裝函式供您使用。

checkedassertChecked(locator), assertNotChecked(locator), verifyChecked(locator), verifyNotChecked(locator)
disabledassertEditable(locator), assertNotEditable(locator), verifyEditable(locator), verifyNotEditable(locator)
hiddenassertVisible(locator), assertNotVisible(locator), verifyVisible(locator), verifyNotVisible(locator)
selectedassertSelected*(locator, pattern), assertNotSelected*(locator, pattern), verifySelected*(locator, pattern), verifyNotSelected*(locator, pattern)

檢查不存在沒有良好包裝函式的布林屬性有點麻煩。 在此範例中,我正在檢查名稱為 elephants 的 select 元素上是否不存在布林屬性 multiple

  assertEval | this.browserbot.findElement("css=select[name=elephants]").getAttribute("multiple"); | null

如果您發現自己經常執行此操作,我建議您將其包裝在使用者擴充功能中,並放在 外掛程式 內,類似如下

  assertBooleanAttribute | css=select[name=elephants]@multiple | false
  assertBooleanAttribute | css=select[name=elephants]@multiple | true

希望這能解決一旦 Selenium IDE 1.0.10 獲得更廣泛的發布後,最終會突然出現的一些「我的腳本為何會中斷!?!?!」問題。

上次修改時間:2021 年 8 月 7 日:重新命名目錄 (e9895f27c26)