元素当前不可见,因此可能无法与节点和selenium驱动程序进行交互

时间:2016-07-01 06:02:10

标签: node.js selenium selenium-webdriver automation click

我有以下代码,我无法将int expiration; // MMyy String expirationStr = String.format("%02d%02d", expiration % 100, expiration / 100); String now = new SimpleDateFormat("yyMM").format(new Date()); if (expirationStr.compareTo(now) < 0) // expired 转换为driver click。它不断抛出错误

  

&#34;元素目前不可见,因此可能无法进行交互&#34;

调试时,您可以清楚地看到该元素是可见的。如何忽略警告或错误?

div

2 个答案:

答案 0 :(得分:0)

您的代码正在点击名为“1_name”的A标记。我正在查看页面,该元素不存在,隐藏或其他方式。

通过使用CSS选择器"a[name='1_name']""a[name='" + tagName + "']"替换大部分代码,您可以获得更好的服务,这将通过单个查找找到所需的元素。然后,您可以单击该元素。

您遇到的问题是您尝试单击的元素不可见,因此出现错误消息。 Selenium旨在仅与用户可以看到的元素进行交互,这些元素将是可见元素。您需要找到您要查找的元素并找出如何使其可见。它可能是单击页面上的另一个链接或滚动面板等

如果您不关心用户场景,只想点击可见或不可见的元素,请查看.executeScript()

答案 1 :(得分:-1)

查看网站并使用F12工具(Chrome)调查页面:

var elements = [].slice.call(document.getElementsByTagName("a"));
var elementNames = elements.map(function (x) { return x.getAttribute("name"); });
var filledElementNames = elementNames.filter(function (x) { return x != null; });
console.log(filledElementNames);

网站http://www.vapeworld.com的内容非常动态。根据具体情况,您可以使用&#34; x_name&#34;获得一个或多个锚点。并不总是&#34; 1_name&#34;:Chrome中脚本的输出是[&#34; 2_name&#34;]而Edge返回[&#34; 1_name&#34;,&#34; 9_name&#34 ;,&#34; 10_name&#34;,&#34; 17_name&#34;,&#34; 2_name&#34;]。所以&#34;你可以清楚地看到元素是可见的&#34;在所有情况下都不是这样。此主题还有一些驱动程序错误,因此如果需要更新驱动程序是值得的。另请参阅this中的答案。这个问题解释了驱动程序使用的所有标准。如果要忽略此错误,可以捕获此异常:

try {
  element.click();
} catch (Exception ex) {
  console.log("Error!");   
}

有关详细说明,请参阅this文档页面。