每当我的程序转到页面的页面时,我目前都在努力关闭facebook's chatbox的atm(计划是kek)。页面加载完成几秒钟后,它会弹出。只要聊天框具有焦点(标题为蓝色),我似乎就无法访问其中的元素,即使该元素已经特别加载了右上角的“ x按钮”。
@b.a(href: "https://www.facebook.com/"+handle+"/?ref=br_rs").click()
@b.a(aria_label: "Close tab").wait_until_present.click()
运行第二行将返回超时错误,即使我一直盯着它停留30秒。神奇地(至少对我来说),如果聊天框失去焦点(变成灰色,通常是在我跳出时),第二行就会运行。我尝试将焦点放在主页的某些元素上,但无济于事。如果执行send_keys,我也可以关闭它,但它需要我增加3秒钟左右的睡眠时间,直到页面加载后聊天框自动打开为止,但我不建议添加硬编码睡眠。有什么帮助吗?预先感谢。
答案 0 :(得分:0)
对此进行了尝试,并且可以在Windows 10,watir 6.12,chromedriver 2.41,Chrome 68.0.3上运行
b.a(:'aria-label' => 'Close tab').click
由于某些原因,它不在我的另一台计算机上,例如Ubuntu 16.04,Watir 6.11,chromedriver 2.40,Chrome 67.0.3
此后它神奇地工作了
require 'watir'
p = Selenium::WebDriver::Chrome::Profile.new
p['enable_aria_label'] = true
b = Watir::Browser.new :chrome, :profile => p
sleep 40 #logged in manually and opened chat box
b.a(:'aria-label' => 'Close tab').click
sleep 20
它关闭找到的第一个聊天框。您可以通过以下方式关闭特定的
b.as(:'aria-label' => 'Close tab')[0].click
也许它也对您有用。