我有 20 个链接的列表,其中一些是重复的。我单击第一个链接,将我带到下一页,我从下一页下载一些文件。
链接1
链接2
链接3
链接1
链接3
链接4
链接2
链接 1(点击)-->(打开)第 2 页
第 2 页(单击后退按钮浏览器)-->(返回)第 1 页
现在我单击链接 2 并重复相同的操作。
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
String fileDownloadPath = "C:\\Users\\Public\\Downloads";
//Set properties to supress popups
Map<String, Object> prefsMap = new HashMap<String, Object>();
prefsMap.put("profile.default_content_settings.popups", 0);
prefsMap.put("download.default_directory", fileDownloadPath);
prefsMap.put("plugins.always_open_pdf_externally", true);
prefsMap.put("safebrowsing.enabled", "false");
//assign driver properties
ChromeOptions option = new ChromeOptions();
option.setExperimentalOption("prefs", prefsMap);
option.addArguments("--test-type");
option.addArguments("--disable-extensions");
option.addArguments("--safebrowsing-disable-download-protection");
option.addArguments("--safebrowsing-disable-extension-blacklist");
WebDriver driver = new ChromeDriver(option);
driver.get("http://www.mywebpage.com/");
List<WebElement> listOfLinks = driver.findElements(By.xpath("//a[contains(@href,'Link')]"));
Thread.sleep(500);
pageSize = listOfLinks.size();
System.out.println( "The number of links in the page is: " + pageSize);
//iterate through all the links on the page
for ( int i = 0; i < pageSize; i++)
{
System.out.println( "Clicking on link: " + i );
try
{
linkText = listOfLinks.get(i).getText();
listOfLinks.get(i).click();
}
该代码运行良好,单击所有链接并下载文件。现在我需要改进逻辑,省略重复的链接。我尝试过滤掉列表中的重复项,但不确定应该如何处理 org.openqa.selenium.StaleElementReferenceException。我正在寻找的解决方案是单击第一次出现的链接,并避免在再次出现时单击该链接。
(这是从门户下载多个文件的复杂逻辑的一部分,我无法控制。因此,请不要带着诸如为什么页面上首先存在重复链接之类的问题回来。 )
ibeautiful
叮当猫咪
慕仙森
相关分类