Не удается идентифицировать элемент на экране — как использовать tab

#selenium #selenium-webdriver #selenium-firefoxdriver

#селен #selenium-webdriver #selenium-firefoxdriver

Вопрос:

Скриншот элемента, который я хочу щелкнуть:

Я автоматизирую свой веб-сайт (новичок в автоматизации). после входа в систему я попадаю на другую страницу, где веб-драйвер selenium не может найти ни один из элементов (я перепробовал все возможности, даже связанные с sso).

Единственное решение, которое я смог найти, это использовать вкладки и ввод.

Поэтому, когда я захожу на эту страницу, мне нужно нажать 9 раз клавишу «TAB» с клавиатуры, а затем ввести, чтобы мой логин был подтвержден. поскольку у меня нет ни одного элемента, с помощью которого я мог бы выполнять действия с вкладками и вводом. есть ли способ, при котором, как только я попадаю на эту страницу, веб-драйвер начинает нажимать клавишу «TAB» 9 раз, а затем «Enter» в 10 раз.

Пожалуйста, помогите, я работаю над этим уже более недели и ничего не добиваюсь.

optimist_creeper-основной класс:

 package Modules;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
import Modules.HomePage;

public class MainClass {
    String appUrl = "als-stg-1.mtvn.ad.viacom.com/webqa/";

    @Test public void MainTest() {
        System.setProperty("webdriver.gecko.driver", "C:\Shayni Coding\Automation\Gecko\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get(appUrl);
        HomePage home = new HomePage();
        home.HomePageTest(driver);
    }
}
  

Класс домашней страницы:

 public class HomePage {
    @BeforeClass public void beforeClass() {
        System.out.println("before class");
    }
    public void HomePageTest(WebDriver driver) {
        driver.manage().window().maximize();
        WebElement email = driver.findElement(By.id("cred_userid_inputtext"));
        email.sendKeys("shayni@outlook.com");
        WebElement pass = driiver.findElement(By.id("cred_password_inputtext"));
        pass.sendKeys(Keys.ENTER);
        pass.click();
        String expectedTitle = "VMS Web";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(expectedTitle,actualTitle);
    }
}
  

Спасибо.

Комментарии:

1. Ваш вопрос не так понятен. «после входа в систему я попадаю на другую страницу, где веб-драйвер selenium не может найти ни одного из элементов» — что это значит? Уточните свое намерение.

2. Вы задали вопрос, но не опубликовали ни одного написанного вами кода, ни соответствующего HTML-кода, ни ссылки на страницу. Я не уверен, как мы должны вам помочь.

Ответ №1:

Просто получите случайный объект, такой как тег body, и используйте его для отправки нажатий клавиш.

например

  WebElement dummyElement = driver.findElement(By.xpath("/html/body"));
 for (int i = 0; i < 9;   i) {
     dummyElement.sendKeys(keys.TAB);
 }
 dummyElement.sendKeys(keys.ENTER);
  

Приведенный выше код находит тело и устанавливает его как элемент. Затем он нажимает клавишу tab 9 раз, а затем нажимает клавишу ввода. Это то, о чем вы просили. Надеюсь, это поможет.

Комментарии:

1. Спасибо, но проблема в том, что он не может найти ни одного элемента на этой странице. поможет ли фиктивный элемент?

2. Если вы даже не можете найти <html> элемент, значит, Selenium отключен и не может вам помочь

3. Как сказал @sokkyoku, похоже, у вас возникли проблемы с запуском работы selenium, не говоря уже о поиске элемента.