Как открыть ссылку в соседнем окне или вкладке с помощью класса действий (Контекст щелкните элемент-> sendkeys ArrowDown -> sendkeys Enter) - PullRequest
1 голос
/ 12 апреля 2019

Я хочу открыть ссылку приложения в новом окне. Используя действие, класс открывает ссылку в том же окне, в котором я сейчас нахожусь.

Я пытался использовать класс Actions с приведенным ниже кодом как в драйвере Chrome, так и в драйвере Firefox с несколькими приложениями, но ни одно из них не работало.

System.setProperty("webdriver.gecko.driver", "D:\\MySpace\\AmozonEcomm\\Dependencies\\geckodriverv21.exe");
WebDriver driver = new FirefoxDriver(); //Creating an instance of Chrome driver
driver.manage().window().maximize();
driver.get("http://automate-apps.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

Actions action = new Actions(driver);
action.contextClick(driver.findElement(By.partialLinkText("Selenium Questions"))).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();

Я ожидаю, что ссылка откроется в новом окне, так как я пытаюсь выбрать опцию «Открыть ссылку в новом окне» после щелчка по контексту. Но каждый раз ссылка открывается в том же окне.

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Вот два варианта открытия ссылки в новом окне (не вкладка).

WebElement el = driver.findElement(By.partialLinkText("Selenium Questions"));
Actions action = new Actions(driver);

contextClick - contextClick() может быть капризным, в некоторых средах он просто отказывается достичь того же результата, что и в других.
Тем не менее, если вы хотите попробовать это, отправьте клавишу "w" - это ярлык для "Открыть в новом окне":

action.contextClick(el).perform();
action.sendKeys("w").perform();  // in two steps

Shift-click - ярлык для нового окна - shift-click, а не ctrl-click для новой вкладки. Этот подход имеет более высокий показатель повторяемости по сравнению с contextClick() - если браузер поддерживает его.

action.keyDown(Keys.SHIFT).click(el).keyUp(Keys.SHIFT).build().perform();
1 голос
/ 12 апреля 2019

Чтобы открыть ссылку с текстом Selenium Questions в соседней вкладке / окне, вы можете использовать следующее решение:

  • Кодовый блок:

    System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
    WebDriver driver = new FirefoxDriver();
    driver.get("http://automate-apps.com/");
    WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Selenium Questions")));
    new Actions(driver).keyDown(Keys.CONTROL).click(elem).keyUp(Keys.CONTROL).build().perform();
    
  • Снимок браузера:

newTAB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...