首页 > 解决方案 > “元素无法点击”New Relic

问题描述

我在 New relic 中的 Selenium JS 遇到了一些困难。我正在尝试单击一个元素,但我一直在返回错误“元素在该点不可单击”。Selenium Web Driver & Java的解决方案。元素在点 (x, y) 处不可点击。其他会收到点击的元素并不真正适用于 NewRelic。我正在使用的片段是

.then(function() {
  log(26, 'clickElement "//form[@id=\'giftcard-form\']/div[3]/div/button"');
  return $browser.waitForAndFindElement(By.xpath("//form[@id=\'giftcard-form\']/div[3]/div/button"), DefaultTimeout); })
 .then(function (el) { el.click(); })

我没有看到代码有任何问题,并且该元素在页面上可见。

![在此处输入图像描述][1]

有什么建议么?这似乎是一个常见问题,但我对其他线程中提供的解决方案没有运气谢谢,Thomas

标签: javascriptseleniumselenium-webdrivernewrelic

解决方案


waitForAndFindElement 将只等待元素存在。它不会等待元素可见性。

尝试等待元素的可见性,

.then(function() {
  log(26, 'clickElement "//form[@id=\'giftcard-form\']/div[3]/div/button"');
 return $browser.wait($driver.until.elementIsVisible($browser.findElement(By.xpath("//form[@id=\'giftcard-form\']/div[3]/div/button"))));
  }).then(function (el) { 
             el.click();
  })

如果您收到超时错误,请滚动查看并单击。

.then(function() {
  log(26, 'clickElement "//form[@id=\'giftcard-form\']/div[3]/div/button"');
  return $browser.waitForAndFindElement(By.xpath("//form[@id=\'giftcard-form\']/div[3]/div/button"), DefaultTimeout); })
.then(function (el) { 
     $browser.executeScript("arguments[0].scrollIntoView()", el);
     el.click();
})

如果滚动没有帮助,那么最后点击 javascript,

.then(function() {
  log(26, 'clickElement "//form[@id=\'giftcard-form\']/div[3]/div/button"');
  return $browser.waitForAndFindElement(By.xpath("//form[@id=\'giftcard-form\']/div[3]/div/button"), DefaultTimeout); })
.then(function (el) { 
     $browser.executeScript("arguments[0].click()", el);
})

推荐阅读