簡體   English   中英

watir 元素點擊攔截:

[英]watir element click intercepted:

我正在嘗試使用 ruby/watir 單擊包含“添加到購物車”字樣的按鈕。

如果我使用

cart = browser.link(text: 'Add To Cart') 
if cart.present?
   cart.click

它有效(項目被添加到購物車)但我截獲了一個元素點擊:元素...在點 (441、20) 不可點擊。 其他元素將收到點擊:(Selenium::WebDriver::Error::ElementClickInterceptedError

我是 ruby/watir 的新手,所以非常感謝任何幫助。

試試這段代碼是否有效。 如果它不起作用,那么正如您所說的那樣,即使在出現錯誤之后,它也會起作用,所以我假設我們必須對覆蓋目標元素的元素發出單擊。 所以粘貼整個錯誤消息。 錯誤消息必須包含實際上是模糊的元素。

require 'watir'
b = Watir::Browser.new
cart = browser.link(text: 'Add To Cart')
if cart.present?
  b.wait_while { cart.obscured? }
  cart.click
end

更新

好的,還有其他兩種方法你必須嘗試。

一種是使用 JavaScript。

cart.click!

或單擊覆蓋您的元素的元素。根據您的錯誤,元素是 class 屬性“行”的划分。 如果您有關於該元素的更多詳細信息,您可以自己找到該元素。 但是現在,根據給定的細節,我形成了定位器。

b.div(class: 'row').click

有幾種方法可以弄清楚發生了什么

嘗試環顧四周

檢查 watir 是否看到多個鏈接,這應該產生 1

browser.as(text: 'Add To Cart').count

然后嘗試點擊每個元素,如果它有超過 1

browser.as(text: 'Add To Cart')[0].click

browser.as(text: 'Add To Cart')[1].click

或者嘗試點擊它的父級,鏈接可以在疊加層后面

browser.a(text: 'Add To Cart').parent.click

然后檢查是否可以通過直接單擊父元素來完成相同的操作

browser.div(class: 'wishlist_cart_button').click

或者您可以嘗試不同的方法,通過其他屬性查找元素

browser.a(href: /setCurrentId/).click

也可能有一個帶有 id 的父元素,這樣你可以更容易地找到購物車按鈕

browser.element(id: "asdf").a(text: "Add To Cart").click

browser.element(id: "asdf").as.last.click

如果以上都失敗了,那就用 selenium 點擊它,因為 watir 擔心點擊被攔截

browser.driver.action.move_to(browser.a(text: 'Add To Cart').wd).click.perform

希望有所幫助:D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM