我有以下代码,我无法将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
答案 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文档页面。