[英]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.