передача значений в datatable файлов функций огурца из файла свойств

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

org.openqa.selenium.WebDriverException: неизвестная ошибка: ключи должны быть строкой

featurefile

Scenario: Capture a user and check user details

Given Opens the userdetails, searches for 'name' and clicks on 'enter'
When Enters the following into the various fields 'Fname', 'Lname', 'Mname', 'Age' and  'Language'
  |fname1|lname1|mname1|age1| language1|
  |fname |lname|mname|age|language|

Step Definition :

@When("Enters the following into the various fields '(.*)', '(.*)', '(.*)', '(.*)', '(.*)', '(.*)' and '(.*)'")
public void enters_the_following_into_the_various_fields_and(String fname1, String lname1, String mname1, String age1, String language1, DataTable dataTable) throws IOException {
    somepageclass = new somepageclass(driver);
    somepageclass.enterUserDetails(fname1, lname1, mname1, age1, language1);

    Properties file :

    fname = Ricky
    lname = Peters
    mname = M
    age = 45
    language = English

    Page methods :

    public void enterUserDetails(String fname1, String lname1, String mname1, String age1, String language1) throws IOException {
    element.sendKeys(loadData().getProperty(fname1));  //loaddata() is reading the property file} 

    Stack Trace :
org.openqa.selenium.WebDriverException: unknown error: keys should be a string

(Информация о сеансе: chrome = 69.0.3497.100) (Информация о драйвере: chromedriver = 2.42.591088 (7b2b2dca23cca0862f674758c9a3933e685c27d5), платформа = Windows NT 10.0.16299 x86_64) (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил информацию о продолжительности или тайм-ауте: команда) миллисекунды Информация о сборке: версия: '3.14.0', редакция: 'aacccce0', время: '2018-08-02T20: 19: 58.91Z' Информация о системе: хост: 'BNEPC9455', ip: '172.28.2.6', os .name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_45' Информация о драйвере: org.openqa.selenium.chrome.ChromeDriver Capabilities {acceptInsecureCerts: false , acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.42.591088 (7b2b2dca23cca0 ..., userDataDir: C: \ Users \ Bankimp \ AppData \ Lolectors: ...}, c: \ Users \ Bankimp \ AppData \ Lolectors: ...} true, databaseEnabled: false, goog: chromeOptions: {debuggerAddress: localhost: 65524}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled : true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takeHeapSnapshot: true, takeScreenshot: true, unknownAlertBehaviourrom:, unhandhand : 69.0.3497.100, webStorageEnabled: true} Идентификатор сеанса: 45d808a230024e3671c80a92214fb8c0

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:276)
at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:51)
at com.sun.proxy.$Proxy13.sendKeys(Unknown Source)

person Ricky    schedule 26.09.2018    source источник


Ответы (2)


возраст = 45

проблема, он читает значение как int, а не строку. измените это на

"45"

person Jsmith2800    schedule 26.09.2018
comment
Он не работает на element.sendKeys (loadData (). GetProperty (fname1)); Любое другое значение не выходит за рамки этого утверждения даже после использования двойных кавычек. - person Ricky; 27.09.2018

У меня это сработало.

Итак, я сделал это, создав класс пользовательских данных с геттером и сеттером. В сеттере я читаю файл опоры, чтобы получить значения параметра данных огурца fname и получить его в методе для использования vaue

person Ricky    schedule 02.10.2018