Не могу сфокусироваться на элементе после щелчка правой кнопкой мыши с помощью селена - PullRequest
0 голосов
/ 18 декабря 2018

Я попробовал этот код, но не смог сосредоточиться на новой вкладке.После щелчка правой кнопкой мыши он не фокусируется на новой вкладке и не выдает никакой ошибки.

public class AM1 {

    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");

        WebDriver d=new ChromeDriver();

        d.get("https://jira.dematic.com/secure/Dashboard.jspa");

        Thread.sleep(2000);
        WebElement addoftask=d.findElement(By.xpath("//a[text()='Create']"));
        Actions a=new Actions(d);

        //Right click on component
        a.contextClick(addoftask).perform();

        a.sendKeys(Keys.ARROW_DOWN).perform();

    }
}

1 Ответ

0 голосов
/ 18 декабря 2018

Боюсь, вы не можете перемещаться по контекстному меню с помощью ключевых команд для любого элемента на странице.

Из кода кажется, что вы хотите открыть URL-адрес ссылки вновое окно.Вы также можете сделать это, открыв новое окно с URL-адресом элемента ссылки.

Существует два основных способа: Javascript и составное действие с использованием клавиш-модификаторов при нажатии на ссылку.

Обратите внимание, что оба подхода не могут обрабатывать javascript: URL-адреса или URL-адреса только для фрагментов с прикрепленными к ним обработчиками событий клика.

Javascript

При этом используется контекст исполнителя Javascriptзапустить window.open() с URL-адресом, извлеченным из элемента ссылки.

// Execute a Javascript snippet
((JavascriptExecutor) d).executeScript("return window.open('"+ addoftask.getAttribute("href") +"', 'newtask');");
// Selenium does not automatically switch to new windows
d.switchTo().window("newtask");

Подробнее о JavascriptExecutor можно найти в SeleniumHQ.

Составное действие

Этот подход использует действие, нажимая клавишу модификатора CTRL, чтобы открыть ссылку в новой вкладке.Далее он использует getWindowHandles() для получения набора открытых окон (и вкладок) и переключается на второе.

// Click with CTRL as modifier for new window.
a.keyDown(Keys.CONTROL).click(addoftask).perform();
// Switch to the second window
d.switchTo().window((String) d.getWindowHandles().toArray()[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...