我获取页面中的所有链接,并导航到所有链接。其中一个链接是注销。如何从循环跳过/忽略注销链接?
我想跳过注销链接并继续
List demovar=driver。findElements(按.tagName(“a”));系统出来println(demovar.size());
ArrayList<String> hrefs = new ArrayList<String>(); //List for storing all href values for 'a' tag
for (WebElement var : demovar) {
System.out.println(var.getText()); // used to get text present between the anchor tags
System.out.println(var.getAttribute("href"));
hrefs.add(var.getAttribute("href"));
System.out.println("*************************************");
}
int logoutlinkIndex = 0;
for (WebElement linkElement : demovar) {
if (linkElement.getText().equals("Log Out")) {
logoutlinkIndex = demovar.indexOf(linkElement);
break;
}
}
demovar.remove(logoutlinkIndex);
//Navigating to each link
int i=0;
for (String href : hrefs) {
driver.navigate().to(href);
System.out.println((++i)+": navigated to URL with href: "+href);
Thread.sleep(5000); // To check if the navigation is happening properly.
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
>
Java方法删除不感兴趣的链接使用Stream.filter()函数:
List<String> hrefs = driver.findElements(By.className("a"))
.stream()
.filter(link -> link.getText().equals("Log out"))
.map(link -> link.getAttribute("href"))
.collect(Collectors.toList());
使用XPath!=
只收集文本不等于Log Out
的链接的运算符解决方案:
List<String> hrefs = driver.findElements(By.xpath("//a[text() != 'Log out']"))
.stream()
.map(link -> link.getAttribute("href"))
.collect(Collectors.toList());
如果您想从循环中删除注销链接,而不是创建列表作为驱动程序。findElements(按.tagName(“a”))
作为替代方案,您可以使用:
driver.findElements(By.xpath("//a[not(contains(.,'Log Out'))]"));
您可以在以下网站找到一些相关讨论:
量角器条件选择器
- 如何通过Python使用Selenium定位按钮元素
- Selenium中使用的xpath中所包含的(,“some text”)指的是什么
- dot(.)在xpath中,在标识元素和匹配文本时采用多种形式
问题内容: 我正在用Python练习Selenium,我想使用Selenium获取网页上的所有链接。 例如,我想要http://psychoticelites.com/上所有标签的属性中的所有链接。 我写了一个脚本,它正在工作。但是,它给了我对象地址。我尝试使用标签来获取值,但是,它不起作用。 我当前的脚本: 问题答案: 好吧,您只需要遍历列表即可: 返回元素列表(注意“ elements”的拼写
问题内容: 我正在用Python练习Selenium,我想使用Selenium获取网页上的所有链接。 例如,我想要http://psychoticelites.com/上所有标签的属性中的所有链接。 我写了一个脚本,它正在工作。但是,它给了我对象地址。我尝试使用标签来获取值,但是,它不起作用。 我当前的脚本: 问题答案: 好吧,您只需要遍历列表即可: 返回元素列表(注意“ elements”的拼写
在selenium中,在python中,我必须循环使用Jira1、jira2、jira3链接 对于范围(1,4)中的i: driver.find_element(By.XPATH,"//a[text()='Jira'] /str(i)")。 它给了我一个错误NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//a[text()='
我使用以下代码滚动页面并跟踪quora上的用户(链接到页面:http://www.quora.com/Kevin-Rose/followers),向下滚动后会加载一定数量的用户,我使用的代码如下: 我得到以下错误: 消息:u'Element不再附加到DOM'; StackTrace: 编辑1:我尝试使用,但函数的输出对象显然不是可以迭代的链接列表。
如果我像下面这样做一个异步调用,如何将它们与promise联系起来,这样我就可以按顺序做事了?在这个例子中,最终发生的是会将项按顺序推入。我更喜欢有promise的回答,但只要有效,什么都行
我的代码不会获取这样的链接。使用doc.select也没有帮助。我的问题是,如何从页面中获得所有链接? 编辑:我想我知道问题出在哪里了。我遇到麻烦的页面写得很糟糕,HTML验证器抛出了大量的错误。这会引起问题吗?