如何右键单击 link 并通过 Java 使用 Selenium 在新选项卡中打开 link
How to right click on a link and open the link in a new tab using Selenium through Java
我正在尝试使用 Selenium 在 Facebook 登录页面上右键单击忘记帐户? link,但它不起作用。
我正在尝试 send.Keys()
在 contextClick()
之后,但按键发生在页面上而不是在上下文菜单上。
package keyboardandmouseaction;
import java.awt.AWTException;
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
public class testcase8 {
public static void main(String[] args) throws AWTException, InterruptedException {
System.out.println("Running keyboardandmouseactions > testcase8");
System.setProperty("webdriver.chrome.driver", "D:\chromedriver\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.facebook.com/");
WebElement link=driver.findElement(By.xpath("//a[contains(text(),\"Forgotten account?\")]"));
Actions a=new Actions(driver);
// defective code start
Action builder=a.moveToElement(link).contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build();
// defective code end
builder.perform();
Set<String> windowid =driver.getWindowHandles();
Iterator<String> itr =windowid.iterator();
String mainwindow=itr.next();
String childwindow=itr.next();
System.out.println("The mainwindow id is "+mainwindow);
System.out.println("The childwindow id is "+childwindow);
driver.switchTo().window(childwindow);
driver.get("http://demo.automationtesting.in/Alerts.html");
driver.close();
}
}
在 link 上 右键单击 并在新选项卡中打开 link 您可以按 ctrl 和 click()
在新选项卡中打开 link,最后使用以下 :
切换到新选项卡
代码块:
import java.util.Collections;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Control_Click {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","C:\WebDrivers\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.facebook.com/");
WebElement forgotPassword = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Forgotten account?")));
String parentWindow = driver.getWindowHandle();
System.out.println("The mainwindow handle is "+driver.getWindowHandle());
new Actions(driver).keyDown(Keys.CONTROL).click(forgotPassword).keyUp(Keys.CONTROL).build().perform();
new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfWindowsToBe(2));
for(String window:driver.getWindowHandles()) {
if(!parentWindow.equalsIgnoreCase(window)) {
driver.switchTo().window(window);
System.out.println("The childwindow id is "+driver.getWindowHandle());
driver.get("http://demo.automationtesting.in/Alerts.html");
}
}
}
}
控制台输出:
The mainwindow handle is CDwindow-0753C465F9132427837081CE5AB8C67D
The childwindow id is CDwindow-79C688CE476CA8EC4729EFFDE93C84EA
浏览器快照:
参考
您可以在以下位置找到一些相关的详细讨论:
- Opening a new tab using Ctrl + click combination in Selenium Webdriver
WebDriver driver = new ChromeDriver();
driver.get("https://www.facebook.com/");
WebElement link=driver.findElement(By.xpath("//a[contains(text(),\"Forgotten account?\")]"));
Actions actions = new Actions(driver);
actions.keyDown(Keys.LEFT_CONTROL)
.click(element)
.keyUp(Keys.LEFT_CONTROL)
.build()
.perform();
ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tab.get(1));
}
我正在尝试使用 Selenium 在 Facebook 登录页面上右键单击忘记帐户? link,但它不起作用。
我正在尝试 send.Keys()
在 contextClick()
之后,但按键发生在页面上而不是在上下文菜单上。
package keyboardandmouseaction;
import java.awt.AWTException;
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
public class testcase8 {
public static void main(String[] args) throws AWTException, InterruptedException {
System.out.println("Running keyboardandmouseactions > testcase8");
System.setProperty("webdriver.chrome.driver", "D:\chromedriver\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.facebook.com/");
WebElement link=driver.findElement(By.xpath("//a[contains(text(),\"Forgotten account?\")]"));
Actions a=new Actions(driver);
// defective code start
Action builder=a.moveToElement(link).contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build();
// defective code end
builder.perform();
Set<String> windowid =driver.getWindowHandles();
Iterator<String> itr =windowid.iterator();
String mainwindow=itr.next();
String childwindow=itr.next();
System.out.println("The mainwindow id is "+mainwindow);
System.out.println("The childwindow id is "+childwindow);
driver.switchTo().window(childwindow);
driver.get("http://demo.automationtesting.in/Alerts.html");
driver.close();
}
}
在 link 上 右键单击 并在新选项卡中打开 link 您可以按 ctrl 和 click()
在新选项卡中打开 link,最后使用以下
代码块:
import java.util.Collections; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Control_Click { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver","C:\WebDrivers\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("--start-maximized"); options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); options.setExperimentalOption("useAutomationExtension", false); WebDriver driver = new ChromeDriver(options); driver.get("https://www.facebook.com/"); WebElement forgotPassword = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Forgotten account?"))); String parentWindow = driver.getWindowHandle(); System.out.println("The mainwindow handle is "+driver.getWindowHandle()); new Actions(driver).keyDown(Keys.CONTROL).click(forgotPassword).keyUp(Keys.CONTROL).build().perform(); new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfWindowsToBe(2)); for(String window:driver.getWindowHandles()) { if(!parentWindow.equalsIgnoreCase(window)) { driver.switchTo().window(window); System.out.println("The childwindow id is "+driver.getWindowHandle()); driver.get("http://demo.automationtesting.in/Alerts.html"); } } } }
控制台输出:
The mainwindow handle is CDwindow-0753C465F9132427837081CE5AB8C67D The childwindow id is CDwindow-79C688CE476CA8EC4729EFFDE93C84EA
浏览器快照:
参考
您可以在以下位置找到一些相关的详细讨论:
- Opening a new tab using Ctrl + click combination in Selenium Webdriver
WebDriver driver = new ChromeDriver();
driver.get("https://www.facebook.com/");
WebElement link=driver.findElement(By.xpath("//a[contains(text(),\"Forgotten account?\")]"));
Actions actions = new Actions(driver);
actions.keyDown(Keys.LEFT_CONTROL)
.click(element)
.keyUp(Keys.LEFT_CONTROL)
.build()
.perform();
ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tab.get(1));
}