Как правильно передать аргументы JavascriptExecutor?

1

Я пытаюсь использовать JavascriptExecutor для моего кода, который включал передачу в WebElement и получение некоторой информации от него. Я получал некоторые ошибки, поэтому я упростил это, чтобы найти проблему.

String test = ((JavascriptExecutor)driver).executeScript("return arguments[0];", "macon").toString();

Этот код не будет работать. Это NullPointerException. Я могу избежать этого, не пытаясь получить доступ к переданной переменной. Кажется, что не важно, что я прохожу; может быть int, string, WebElement и т.д. и т.д.

Так что же? Я не вижу различий между онлайн-примерами и моим кодом, но, очевидно, что-то. Я использую Firefox WebDriver, а моя версия Selenium - 2.44.0

  • 1
    "macon" - это строка, которую я предполагаю, и вы передаете ее в javascript для выполнения чего?
  • 0
    Это просто тестовая строка. Я пытаюсь вернуть любой аргумент и назначить его в тесте String. Это тот доступ к аргументу, который не работает
Теги:
selenium
nullpointerexception

2 ответа

1
Лучший ответ

Вам просто нужно передать результаты в String:

JavaScriptExecutor js = (JavaScriptExecutor) driver;
String test = (String) js.executeScript("return arguments[0];", "macon");

Кроме того, были проблемы совместимости между selenium 2.44 и Firefox 35/36, которые влияли на выполнение кода javascript:

  • 0
    Да, переход на версию 2.45 исправил проблему. Спасибо!
-1

Попробуйте этот код:

JavaScriptExecutor js = (JavaScriptExecutor) driver;

String example=(String)js.executeScript('return $('table tbodt tr td:eq(0)')') .text();

Ещё вопросы

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