Я пытаюсь автоматизировать страницу, и я хочу нажать кнопку воспроизведения видео.у видеоизображения есть идентификатор, поэтому я использую 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)