Сэмплер JSR233 с Java для работы с Selenium Webdriver (javax.script.ScriptException: в файле: встроенная оценка) - PullRequest
0 голосов
/ 28 января 2019

Попытка запустить скрипт Selenium Webdriver в Jmeter с использованием сэмплера JSR233.Сценарий прекрасно работает в Eclipse IDE, однако в Jmeter ниже приведена ошибка.

ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, 
message: javax.script.ScriptException: In file: inline evaluation of: 
``import java.util.HashMap; import org.openqa.selenium.WebDriver; import 
org.openq . . . '' Encountered "," at line 28, column 25.
in inline evaluation of: ``import java.util.HashMap; import 
org.openqa.selenium.WebDriver; import org.openq . . . '' at line number 28
javax.script.ScriptException: In file: inline evaluation of: ``import 
java.util.HashMap; import org.openqa.selenium.WebDriver; import org.openq . 
. . '' Encountered "," at line 28, column 25.
in inline evaluation of: ``import java.util.HashMap; import 
org.openqa.selenium.WebDriver; import org.openq . . . '' at line number 28
at bsh.engine.BshScriptEngine.evalSource(BshScriptEngine.java:82) ~[bsh- 
2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at bsh.engine.BshScriptEngine.eval(BshScriptEngine.java:46) ~[bsh- 
2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_181] 

Ниже приведен сценарий, который пытается выполнить:

    import java.util.HashMap;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.openqa.selenium.By;
    import org.openqa.selenium.support.ui.WebDriverWait;
    import org.openqa.selenium;
    System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
    String downloadFilepath = "D:/MyDeskDownload";
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
   // chromePrefs.put("profile.default_content_settings.popups", 0);
   // chromePrefs.put("download.default_directory", downloadFilepath);
   // chromePrefs.put("safebrowsing.enabled", "true"); 
    ChromeOptions options1 = new ChromeOptions();
    options1.setExperimentalOption("prefs", chromePrefs);
    DesiredCapabilities cap = DesiredCapabilities.chrome();
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    cap.setCapability(ChromeOptions.CAPABILITY, options1);
    WebDriver driver = new ChromeDriver(cap);
    driver.setJavaScriptEnabled(true);
    driver.get("http://google.com/");

Ниже приведены ссылки, приведенные выше.скрипт:

Мы могли бы добиться запуска браузера и выполнения действий с помощью сэмплера конфигурации Selenium Webdriver с JavaScript, однако, поскольку мы не можем настроить возможности с помощью WDS, мы пытаемся достичьто же самое в JSR233.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Beanshell не поддерживает оператор алмаза , если вы действительно хотите продолжить работу с Beanshell - измените эту строку:

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();

на эту

HashMap chromePrefs = new HashMap();

Имейте в виду, что начиная с JMeter версии 3.1 рекомендуется использовать JSR223 Test Elements и язык Groovy для сценариев , причины этого заключаются в следующем:

Так что подумайте о переходе на Groovy, я ожидаю, что никаких изменений не потребуется (вам может понадобиться переписать лямбда-выражения в замыкания, если таковые имеются, однако накладные расходы будут минимальными)

0 голосов
/ 29 января 2019

Из стека трассировки видно, что вы используете JSR223 с Beanshell или Java (что будет beanshell).

Поскольку это Beanshell, он не понимает дженерики (оператор Diamond), поэтому эта строка:

HashMapchromePrefs = новый HashMap();

Так что вам просто нужно переключить язык на Groovy, чтобы решить проблему:

JSR223 Sampler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...