Проблемы с щелчком в элементе JQUERY с помощью Selenium Webdriver - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь нажать некоторые элементы JQUERY с очень известного веб-сайта, чтобы попрактиковаться в Selenium (http://the -internet.herokuapp.com / jqueryui / menu ).

Iвыяснил, как перейти в меню (не уверен, что мой код является хорошим решением), однако я не могу нажать в каждом последнем пункте подменю (PDF, CSV, Excel)

Я пытаюсь что-токак ниже:

Actions builder = new Actions(driver);
Action mouseOverMenu;

mouseOverMenu = builder.moveToElement(driver.findElement(By.id("ui-id-2"))).build();
mouseOverMenu.perform(); //accessing Enabled menu option

mouseOverMenu = builder.moveToElement(driver.findElement(By.id("ui-id-4"))).build();
mouseOverMenu.perform(); //accessing Downloads submenu option

String jQuerySelector = "$('a#ui-id-6.ui-corner-all')";
WebElement webElement = (WebElement) ((JavascriptExecutor) driver).executeScript("return $(" + jQuerySelector+ ").get(0);");

//click() also did not work
WebElement webElement = (WebElement) ((JavascriptExecutor) driver).executeScript("return $(" + jQuerySelector+ ").click();");

1 Ответ

1 голос
/ 01 октября 2019

Ваша JavaScript функция щелчка неверна.

Используйте приведенный ниже синтаксис javascript

executor.executeScript("arguments[0].click();", WebElement);

Ниже код работает для меня:

    Actions builder = new Actions(driver);
    Action mouseOverMenu;

    mouseOverMenu = builder.moveToElement(driver.findElement(By.id("ui-id-2"))).build();
    mouseOverMenu.perform(); //accessing Enabled menu option

    WebDriverWait wait = new WebDriverWait(driver, 30);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ui-id-4")));
    wait.until(ExpectedConditions.elementToBeClickable(By.id("ui-id-4")));

    mouseOverMenu = builder.moveToElement(driver.findElement(By.id("ui-id-4"))).build();
    mouseOverMenu.perform(); //accessing Downloads submenu option

    WebElement webElement2= driver.findElement(By.cssSelector("a#ui-id-6.ui-corner-all")); // #ui-id-6 is for pdf, #ui-id-7 csv so on
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", webElement2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...