使用dmore / behat-c​​hrome-extension设置日期时间字段的值

问题描述

我可以使用Selenium Standalone Chrome中的Behat / Mink设置日期时间表单字段的值,但不能使用Dmore Behat Chrome Extension设置。

我已经定义了这样一个步骤:

And I assign the date "yesterday" with timezone "Asia/Tokyo" for "edit-field-datetime-MYFIELD-0-value"

FeatureContext.PHP中,这是我的代码

  /**
   * @Then I assign the date :date with timezone :timezone for :field
   *
   * Assign the specified date to the element with the given CSS.
   */
  public function assertEnterDateForField($field,$timezone,$date_string) {
    $date_field = $field . '-date';
    $time_field = $field . '-time';
    // Drupal stores timezones as UTC so we need the base time in UTC.
    $datetime = new DateTime($date_string,timezone_open('UTC'));
    // We need to convert the UTC time to the user's timezone.
    // This is because when saving the entity,// Drupal will convert the value to UTC.
    $datetime->setTimezone(timezone_open($timezone));
    $date_output_string = $datetime->format('mdY');
    $time_output_string = $datetime->format('hisA');
    $datetime_debug_string = $datetime->format('Y-m-d\TH:i:sO');
    $this->fillfield($time_field,$time_output_string);
    $this->fillField($date_field,$date_output_string);
    echo "Datetime $datetime_debug_string
    Field set to
    date: $date_output_string
    time: $time_output_string";
  }

在我的本地环境(运行lando容器的Standalone Chrome上,此代码按预期工作;日期/时间已为该字段正确设置。

但是,在我的测试服务器(Pantheon / CircleCI,运行Behat Chrome Extension)上,它不起作用。测试服务器上的代码输出的调试信息是正确的;例如:

  │ Datetime 2020-08-13T09:00:00+0900
  │     Field set to
  │     date: 08132020
  │     time: 090000AM

但是,日期/时间实际上并未填写。这是运行代码后的步骤的屏幕截图:

empty datetime field

这是Drupal的HTML代码

<div id="edit-field-datetime-review-target-0-value">
    <div class="field js-form-item form-item js-form-type-date form-item-field-datetime-review-target-0-value-date js-form-item-field-datetime-review-target-0-value-date form-no-label">
        <label class="label control-label visually-hidden" for="edit-field-datetime-review-target-0-value-date">
            Date
        </label>
        <div class="control">
            <input id="edit-field-datetime-review-target-0-value-date" class="form-date is-link input" title="Date (e.g. 2020-08-22)" max="2050-12-31" min="1900-01-01" name="field_datetime_review_target[0][value][date]" size="12" type="date" value="2020-08-22" data-drupal-selector="edit-field-datetime-review-target-0-value-date" data-drupal-date-format="Y-m-d" />
        </div>
    </div>
    <div class="field js-form-item form-item js-form-type-date form-item-field-datetime-review-target-0-value-time js-form-item-field-datetime-review-target-0-value-time form-no-label">
        <label class="label control-label visually-hidden" for="edit-field-datetime-review-target-0-value-time">
            Time
        </label>
        <div class="control">
            <input id="edit-field-datetime-review-target-0-value-time" class="form-time is-link input" title="Time (e.g. 15:19:19)" name="field_datetime_review_target[0][value][time]" size="12" step="1" type="time" value="15:19:04" data-drupal-selector="edit-field-datetime-review-target-0-value-time" />
        </div>
    </div>
</div>

因此,如何使用Dmore/Behat-chrome-extension设置日期时间字段的值?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)