Selenium - кликни по фильму с Viedogular - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь автоматизировать страницу, и я хочу нажать кнопку воспроизведения видео.у видеоизображения есть идентификатор, поэтому я использую xPath.

У меня более 1 фильма, и я заметил, что во втором фильме изменяется xPath кнопки наложения (в результате селен не может найти кнопку).

Я посмотрел немного и обнаружил, что он обернут Videogular (видеоплеер).

Мой вопрос, как нажать эту кнопку воспроизведения наложения.Я предполагаю, что это должно быть с командой выполнения JavaScript.

Это то, что я пытался и не работал:

js .executeScript("document.getElementByxPath(\"//*[@id=\"cdk-accordion- 
child-5\"]/div/app-sensors-video/app-cognata-video/vg-player/vg-overlay-play/div\").play()");

, который дал мне nullpointerexception

public class TestClass {

    private WebDriver driver;
    private String baseUrl;
    LoginPageFactory loginPage;
    DashboardPageFactory dashboard;
    ViewSummaryPageFactory viewSummary;
    SimulationAnalysisPageFactory simulationAnalysis;
    JavascriptExecutor js = (JavascriptExecutor) driver;

    @BeforeClass
    public void setup() {

        driver = new ChromeDriver();
        baseUrl = "*****";
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        driver.get(baseUrl);

        loginPage = new LoginPageFactory(driver);
        dashboard = new DashboardPageFactory(driver);
        viewSummary = new ViewSummaryPageFactory(driver);
        simulationAnalysis = new SimulationAnalysisPageFactory(driver);
    }


    @Test
    public void test() throws Exception {
        loginPage = new LoginPageFactory(driver);
        loginPage.insertUserName("foresight");
        loginPage.insertPassword("fs2018");
        loginPage.clickSubmit();
        int size = dashboard.listSize();
        for (int i=2; i<size; i++) {
            WebElement currentScenario = dashboard.createScenariosList(i);
            currentScenario.click();
            Thread.sleep(2000);
            dashboard.clickSummary();
            viewSummary.clickSimulationAnalysisPage();
            Thread.sleep(5000);
            js.executeScript("document.getElementByxPath(\"//*[@id=\"cdk-accordion-child-5\"]/div/app-sensors-video/app-cognata-video/vg-player/vg-overlay-play/div\").play()");
            String percentage = "0";
            while (percentage != "100%")  {
                WebElement elm = driver.findElement(By.xpath("//*[@id=\"cdk-accordion-child-0\"]/div/app-sensors-video/app-cognata-video/vg-player/vg-scrub-bar/div"));
                percentage  = (String) elm.getAttribute("aria-valuenow");
                if (percentage.equals("100%")) {
                    break;
                }
            }
            if (i != size) {
                dashboard.clickDashboardTab();
            }
            else {
                System.out.println("Test Completed");
            }
        }

    }

}

Ошибка:

Java.lang.NullPointerException at test.TestClass.test (TestClass.java:55) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестный источник) в sun.refmphoin.AlegatingНеизвестный источник) на java.lang.reflect.Method.invoke (Неизвестный источник) на org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:124) на org.testng.internal.Invoker.invokeMethod:5) в org.testng.internal.Invoker.invokeTestMethod (Invoker.java:716) в org.testng.internal.Invoker.invokeTestMethods (Invoker.java:988) в org.testng.internal.TestMethodWorker.invokeTestMethod:125) в org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) в org.testng.TestRunner.privateRun (TestRunner.java:648) в org.testng.TestRunner.run (TestRunner.java:505) в org.testng.SuiteRunner.runTest (SuiteRunner.java:455) в org.testng.SuiteRunner.runSequentially (SuiteRunner.java:450) в org.testng.Suiteneruner.privateRun (SuiteRunner Suite): 415) в org.testng.SuiteRunner.run (SuiteRunner.java:364) в org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) в org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker) или в SuiteRunnerWorker.j.testng.TestNG.runSuitesSequentially (TestNG.java:1208) в org.testng.TestNG.runSuitesLocally (TestNG.java:1137) в org.testng.TestNG.runSuites (TestNG.jest: 1049) в org.test .Tng.выполнить (TestNG.java:1017) в org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:114) в org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:251) в org.test.rem.main (RemoteTestNG.java:77)

...