我试图找到一个网页上的所有超链接,链接文本也在列表中,页脚名称。我想点击链接,等待(稍后会放入验证检查),导航回来,然后点击allLinksHrefs列表中的下一个链接(其中应该包含所有必要的网页链接元素)。目前,我能够找到第一个链接,单击它,导航回来,但随后测试失败。我使用硒WebDriver与C#。提前感谢。
public void TestFooterPageLinks()
{
List<IWebElement> allLinksHrefs = new List<IWebElement>();
List<String> allLinksText = new List<String>();
String currentUrl = Browser.Url;
List<String> footerNames = new List<String>();
footerNames.Add("About");
footerNames.Add("Press");
footerNames.Add("Safety");
footerNames.Add("Privacy");
footerNames.Add("Help");
footerNames.Add("Terms");
foreach (IWebElement link in Browser.FindElements(By.TagName("a")))
{
if (footerNames.Contains(link.Text))
{
if (allLinksHrefs.Contains(link)) {
continue;
}
else {
allLinksHrefs.Add(link);
Console.WriteLine(link);
}
}
}
foreach (IWebElement pageLink in allLinksHrefs)
{
Console.WriteLine(pageLink);
pageLink.Click();
Console.WriteLine(Browser.Title);
Browser.Wait(3);
Browser.Back();
}
}
}
以下是我可能实现这一目标的方法:
List<WebElement> links = driver.findElements(By.cssSelector('a'));
以上是你每一天的收获
然后我可以看到两种不同的方法,我将概述一个简单的例子。
Iterator<WebElement> iter = links.iterator();
设置迭代器对象
while (iter.hasNext()) {
WebElement we = iter.next();
visitPage(we);
}
然后有支持访问页面功能
public void visitPage(WebElement link) {
try {
link.click()
Console.WriteLine("Visited Page: " + driver.getTitle() + " at url: " + link.text()); //for page title
} catch (Exception e) {
//do something clever with error handling
e.printStackTrace();
}
// navigate back
driver.manage.navigate.back(); //go back to previous page (maybe don't even care about this)
}
以这种方式尝试它解决了你的问题”在导航回来后,以前找到的元素将过期。因此,我们需要更新代码,以便在导航返回后重新查找元素”
driver.navigate().to("http://www.example.com/");
List<WebElement> links = driver.findElements(By.tagName("a"));
System.out.println(links.size());
for(int i=0; i<links.size(); i++) {
// Print the link text
System.out.println(links.get(i).getText());
// Print the href's
System.out.println(links.get(i).getAttribute("href"));
links.get(i).click();
System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());
driver.navigate().back();
/* after navigating back the elements found previously will be expired.
Hence we need to update the code to refind the elements after navigate back.
so again we write the links = driver.findElements(By.tagName("a")); */
links = driver.findElements(By.tagName("a"));
}
我在处理包含javascript链接的页面时遇到了麻烦。问题是页面包含的城市列表中有javascript在他们的链接。现在我必须一个接一个地导航到每个链接,抓取一些信息,然后回到列表,移动到下一个城市,继续抓取。 问题是在使用selenium web驱动程序点击javascript链接后,当我导航回列表页面时,响应丢失,我得到错误如下: 有办法吗?
问题内容: 是否可以使用selenium浏览给定URL(网站)的所有URI ? 我的目标是使用具有给定选择的URL的selenium来启动firefox浏览器(由于有了此网站,我知道该怎么做),然后让firefox浏览URL(该网站)拥有的所有页面。我感谢有关如何在Python中进行操作的任何提示/帮助。 问题答案: 您可以在类中使用递归方法,例如下面给出的方法。 希望这对您有所帮助。
我正在使用selenium使用chrome浏览器来自动化网页,但是chrome浏览器没有启动,它在地址栏中显示“数据:;”而没有加载任何页面。 selenium: selenium-服务器-独立-3.0.0-beta2,也尝试了2.53 Chrome驱动程序:2.23(http://chromedriver.storage.googleapis.com/index.html?path=2.23/)
我正试图从一个通过“下一步”按钮链接了多个页面的站点中获取数据 后续页面URL与上一页面URL没有对应关系 (在这种情况下,修改路径可以解决问题) 这就是我打算做的- 1.从初始URL开始 2.提取信息 3.点击NEXT 重复2次和3次 具体来说,我想知道如何在单击时获取新页面URL 这是我到目前为止想出来的 任何帮助都将不胜感激
我目前一直在使用超链接类型浏览Javafx中的网站。 我需要创建一个具有指定名称的超链接类型。当我单击链接时,应该会弹出一个网站。 我的代码是: ... ... 上面的代码正确地显示了一个带有文本的超链接。它是可点击的,但什么都不会发生。为了浏览网站,我能做些什么?
问题内容: 如何防止使用JavaScript浏览网页? 问题答案: 使用可以显示消息,但不会中断导航(因为为时已晚)。但是,使用会中断导航: 注意:返回空字符串,因为较新的浏览器提供了诸如“任何未保存的更改将丢失的信息”之类的消息,这些消息不能被覆盖。 在较旧的浏览器中,您可以指定要在提示中显示的消息: