下面是我正在努力工作的代码。
//Method to fetch all links from the sitemap container
public void GetAllLinks() {
WebElement pointer = LinksContainer;
String url = "";
List <WebElement> allURLs = pointer.findElements(By.tagName("a"));
System.out.println("Total links on the page: "+ allURLs.size());
for (int i=0; i<allURLs.size(); i++) {
WebElement link = allURLs.get(i);
url = link.getAttribute("href");
OpenAllLinks(url);
}
}
//Method to hit all the fetched URLs
public void OpenAllLinks(String linkURL) {
driver.get(linkURL);
}
我从一个站点地图页面获取所有锚元素,然后将所有这些元素放入一个列表中。然后,我使用getAttribute(href)
从所有这些元素获取URL。在这里之前,代码运行良好。
然而,之后我将这些URL作为参数,并将其传递到方法OpenAllLinks()
,以使用驱动程序逐个打开所有这些URL。get()
。代码一直工作到第一个链接,但一旦加载了第一个页面,就会出现stale元素异常。
在你离开页面的时候,所有这些链接都出现在allURLs
列表中的所有web元素都变成了过时的元素
您可以做的是首先提取所有链接并保存在列表中,而不是web元素,然后循环打开所有这些链接
像这样:
public void GetAllLinks() {
WebElement pointer = LinksContainer;
String url = "";
List <WebElement> allURLs = pointer.findElements(By.tagName("a"));
System.out.println("Total links on the page: "+ allURLs.size());
List<String>links = new ArrayList<>();
for (int i=0; i<allURLs.size(); i++) {
WebElement link = allURLs.get(i);
url = link.getAttribute("href");
links.add(url);
}
for (int i=0; i<links.size(); i++) {
OpenLink(links.get(i));
}
}
//Method to open the fetched URLs
public void OpenLink(String linkURL) {
driver.get(linkURL);
}
我试图创建一个并发的数据结构,它允许一个线程轮询随机元素,而另一个线程正在写入它。 我担心的是:在极端情况下,例如,在线程A调用(在中)之后,线程B删除最后一个元素。不幸的是,随机索引恰好是最后一个元素(已被删除)的索引。因此,调用将抛出未捕获的。这是我所不期望的-调用失败,即使此列表中仍有元素。 所以我想问:我的担心是真的吗?也许我误解了(或任何其他类型的并发列表)实际上是做什么的?如果我的担心
我能够使用以下代码成功加载基于XML的属性文件: 我的财产文件代码 但是,当我运行这个时,我得到以下异常: 引起:org.xml.sax.SAXParseExc0019:元素类型属性的内容必须匹配(注释?,条目*)。在org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseExc0019(未知来源)在org.apache.xerces.ut
示例代码: 我正在类A中的页面上创建WebElement列表,在类B中,我试图单击第一个元素。 在执行时,我得到以下例外: 问题与findElement有关,因为当我在代码中手动使用findElement方法将元素添加到列表中时,代码运行良好。 在下面的示例中,我对findElements行进行了注释,并手动添加了元素,这段代码运行良好。 有人能告诉我出了什么问题吗?
我正在使用以下代码检索我的链接: 接下来,我呼吁: 然后 并且抛出过时的元素异常。 现在,考虑到,我本以为可以避免这个问题,但它仍然存在。 我很想在加载页面源代码后,将其放入lxml中,以完全避免这个问题。 建立和迭代链接之间的时间最多为一秒钟。 有没有其他人遇到过这样的问题,并找到了解决方案? 感谢您的指导。
当已知Python列表总是包含单个项时,除了: 你可能会问,'你为什么要这么做?‘。仅仅是好奇心。在Python中似乎有一种替代的方法来完成所有的事情。
我有这个网站:http://embed.plnkr.co/Bs5iDqtXSSnvye2ORI6k/preview 代码: 和以下规格: 这种配置: 当我运行Protractor时,会出现以下错误: StaleElementReferenceError:过时元素引用:元素未附加到页面文档(会话信息:chrome=43.0.2357.81) (驱动程序信息:chronidriver=2.15.322