【问题标题】:Watir ChromeDriver Can NOT click Element in Jenkins-AWS-UbuntuWatir ChromeDriver 无法单击 Jenkins-AWS-Ubuntu 中的元素
【发布时间】:2018-05-21 01:05:37
【问题描述】:

我有以下屏幕 这是我点击“状态”标签的红宝石步骤。

And(/^Click The Status Tab$/) do
# statusTab = driver.link(id: "tab3")
statusTab = driver.link visible_text: "STATUS"
statusTab.wait_until_present
if statusTab.exists?
    statusTab.click
    puts "Status Tab Clicked"
else
    fail "Could NOT locate Status Tab"
end
end

正如您在上面的代码中看到的那样,我尝试通过 'id' 和 'visible_text' 使用定位器“link”。 上面的代码在我的本地计算机上运行良好。我尝试在无头模式下使用 chromedriver 和 chromedriver 运行它。我也尝试在本地计算机上使用 Jenkins。

但是,在 AWS 的 Jenkins 服务器上运行它时失败了。 我的黄瓜报告中出现以下错误:

unknown error: Element <em>...</em> is not clickable at point (146, 16). Other element would receive the click: <li>...</li>

(会话信息:无头 chrome=62.0.3202.62) (驱动信息:chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.0-1039-aws x86_64) (Selenium::WebDriver::Error::UnknownError)

有没有办法解决这个问题?

【问题讨论】:

  • 你为什么要为 Watir 标记这个问题?我没有看到上面的 watir 代码,我看到的看起来像 webdriver 代码。
  • @ChuckvanderLinden 所有这些都是 WATIR 代码,显然是 WATIR 代码!他使用变量驱动程序而不是b,仅此而已。看他调用的函数,link,wait_until_present
  • @FMD,您的页面是否使用响应式/自适应设计?如果你在本地把浏览器变小,它还能用吗?
  • 哦,我明白了...必须展开屏幕截图才能看到实际代码。 (在查看主要问题时不可读。我看到了他包含的错误,这足以知道发生了什么。顺便说一句,由于“驱动程序”是 webdriver 的约定,我认为我们应该不鼓励使用在 Watir 中编码时作为浏览器对象的名称.. (我的意思是清楚人们可以做他们喜欢做的事,但它确实会引起混淆并让人认为它是一个 webdriver '驱动' 对象)
  • @JustinKo yuph。它在我的本地计算机上运行正常。

标签: ruby amazon-web-services jenkins automation watir


【解决方案1】:

大多数情况下,某些东西在真实浏览器中可以正常工作,但不是无头的,这是由于实际浏览器窗口的大小不同。 Headless 似乎在一个较小的窗口中打开,这可能会导致两件事发生

1) 元素可能不在屏幕上,并且由于某种原因无法滚动到

2) (尤其是典型的响应式站点,这些站点会根据允许的空间进行排列)该站点最终会被安排为使另一个元素覆盖您尝试点击的那个。

这种情况的线索通常在错误消息中。在您的情况下,文本 Other element would receive the click 告诉您,其他东西掩盖了您尝试点击的内容。

尝试在创建浏览器/驱动程序对象后立即设置浏览器窗口大小。如果您使用的是 Watir,该命令通常看起来像这样

browser.window.resize_to(1024, 768)

通常我会与 PO 交谈并询问支持的最小屏幕尺寸(假设浏览器窗口最大化)是多少,然后将浏览器设置为该尺寸。通常,如果要在没有特殊移动网站的情况下支持平板电脑浏览,则支持的最小屏幕尺寸为 1024x786 或 768x1024(取决于假设是纵向还是横向)

【讨论】:

  • 您好,感谢您的回答。我已经尝试过该命令并通过使用 size = driver.window.size 来检查窗口大小 puts "The browser window is #{size.width} wide by #{size.height} high" 而且,窗口大小停留在 800x600 上。 ..还有其他方法可以调整窗口大小吗?谢谢。
  • 除非在第一次创建浏览器对象时可以将 size 指定为参数/属性,否则我知道的唯一方法是 b.window.resize_to 方法。您可以尝试使用 browser.driver.manage.window.resize_to 更直接地调用 webdriver 方法,但我希望这正是 Watir 本身正在调用的,所以我不希望有任何区别(如果有,请提交错误)。是所有浏览器都会出现这个问题,还是只是一种特定的浏览器?您的浏览器和相应的“驱动程序”(例如 chromedriver)是否完全是最新的?
猜你喜欢
  • 2015-06-08
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多