Почему Selenium WebDriver не переключится на мою новую вкладку, которая является отчетом о Excel

1

Я использовал этот метод несколько раз в других сценариях, и он полностью фокусируется на моей недавно открытой вкладке. Теперь у меня есть ссылка на активный отчет excel, который загружается в новую вкладку, когда я нажимаю на нее, а мой код ниже не меняет фокус на эту недавно загруженную вкладку. Я не уверен, почему из-за того, что вкладка управления все еще работает в браузере, значит, он не должен работать в моем коде? Любая помощь относительно того, почему мой код не фокусируется на моей недавно открытой вкладке отчета Excel, будет большой помощью. Благодарю!

public void mymethodnameishere (WebDriver driver) {
        System.out.println("Starting mymethodnameishere method");
        Actions action = new Actions(driver);
        action.moveToElement(driver.findElement(mylocatorishere));        
        action.contextClick(driver.findElement(mylocatorishere)).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
        action.sendKeys(Keys.CONTROL).sendKeys(Keys.TAB).perform();
        System.out.println("mymethodnameishere method completed successfully");
Теги:
excel
selenium
webdriver

2 ответа

0

Я действительно нашел другой способ заставить его работать на вкладках, не открывая окна. Фокус переключился на мой недавно открытый отчет Excel, просто добавив ту же строку ниже. Теперь он работает нормально.

action.sendKeys(Keys.CONTROL).sendKeys(Keys.TAB).perform();

Окончательный рабочий код ниже:

    public void mymethodnameishere (WebDriver driver) {
            System.out.println("Starting mymethodnameishere method");
            Actions action = new Actions(driver);
            action.moveToElement(driver.findElement(mylocatorishere));        
            action.contextClick(driver.findElement(mylocatorishere)).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
            action.sendKeys(Keys.CONTROL).sendKeys(Keys.TAB).perform();
            action.sendKeys(Keys.CONTROL).sendKeys(Keys.TAB).perform();
            System.out.println("mymethodnameishere method completed successfully");
0

Вместо открытия на новой вкладке откройте отчет excel в новом окне, потому что селен не может переключать дескрипторы на две вкладки, чтобы работать над обоими из них, поскольку они принадлежат одному окну. Даже если вы переходите через вкладки, используя "CTRL + ENTER", я боюсь, что фокус не сдвинется с исходной вкладки. Если вы откроете отчет в новом окне, вы сможете переключаться между ними с помощью соответствующих оконных дескрипторов.

Ниже код Java поможет вам открыть отчет в новом окне:

action.contextClick(driver.findElement(mylocatorishere)).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();

Кроме того, перейдите по этой ссылке, где я изложил пример работы с двумя окнами одновременно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню