**我正在尝试使用 Selenium 单击动态链接,当我在 GUI 中运行测试时,它们非常好,因为我使用的方法是从剪贴板复制链接,但在无头模式下,剪贴板的使用不是有可能。
我正在使用多种选项,但到目前为止我还没有成功。任何提示我都会很感激
WebElement dynamicLinkElement = driver.findElement(By.cssSelector("button[data-test-share-portal-url]"));
dynamicLinkElement.click();
Thread.sleep(1000);
((JavascriptExecutor) driver).executeScript("window.open()");
ArrayList<String> tabs1 = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs1.get(1));
String dynamicLink = getLinkFromClipboard();
driver.get(dynamicLink);
Thread.sleep(5000);
int retryCount = 0;
// Define the maximum number of retries
int maxRetries = 10; // Adjust this value as needed
// Define the URL to check for "not found"
System.out.println(driver.getCurrentUrl());
// Retry until the URL is no longer "not found" or the maximum retries are reached
while (driver.getCurrentUrl().contains("not-found") && (retryCount < maxRetries)) {
// Wait for 5 seconds before the next retry
// Refresh the page to try again
driver.get(dynamicLink);
Thread.sleep(5000);
// Increment the retry count
retryCount++;
}
ArrayList<String> tabs0 = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs0.get(0));
Thread.sleep(3000);
}
WebElement dynamicLinkElement = driver.findElement(By.cssSelector("button[data-test-share-portal-url]"));
dynamicLinkElement.click();
Thread.sleep(1000);
// Open a new tab using JavaScript
((JavascriptExecutor) driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1)); // Switch to the new tab
// Parse the HTML content of the new tab to extract the dynamic link
String dynamicLink = extractDynamicLinkFromPageSource(driver.getPageSource());
if (dynamicLink != null) {
driver.get(dynamicLink);
Thread.sleep(5000);
// Rest of your retry and assertion logic
} else {
// Handle the case where dynamicLink is not found
}
Thread.sleep(3000);
}
private String extractDynamicLinkFromPageSource(String pageSource) {
Document document = Jsoup.parse(pageSource);
// Modify this selector based on your actual HTML structure
Elements linkElements = document.select("a[data-test-share-portal-url]");
if (!linkElements.isEmpty()) {
Element linkElement = linkElements.first();
String dynamicLink = linkElement.attr("href");
return dynamicLink;
}
return null;
}
找到答案了! 当您在无头模式下工作时,您的剪贴板将变得不可用,因此我创建了一种方法来复制链接和一个新选项卡。