如何检查Behat / Mink中的(任意)IP地址?

时间:2017-09-24 06:04:37

标签: drupal behat mink

我正在使用Behat / Mink来测试Drupal 8网站。

我有一个带IP地址的输入字段,我想确保已经记录了IP地址。我不想检查特定的IP地址,因为它可能会改变,所以我只想确保该字段有一些价值。

基于IP地址将包含句点的假设,我尝试了这个:

 Then the "#edit-field-ip-0-value" element should contain "."

但这失败了,错误:

    The string "." was not found in the HTML of the element matching css "#edit-field-ip-0-value". (Behat\Mink\Exception\ElementHtmlException)

但是,该字段的值为:

172.19.0.1

所以有一段时期;我不明白为什么“包含”看不到它。

我也试过像这样检查:

 Then the "#edit-field-ip-0-value" element should contain "0"

但它失败并出现相同的错误(在元素的HTML中找不到字符串)。

修改

这是我想要定位的HTML:

<input class="js-text-full text-full form-text" data-drupal-selector="edit-field-ip-0-value" type="text" id="edit-field-ip-0-value" name="field_ip[0][value]" value="172.19.0.1" size="60" maxlength="255" placeholder="">

1 个答案:

答案 0 :(得分:0)

这是我最终使用的代码:

  /**
   * @Then the :element element should contain an IP address
   *
   * Checks that the element with the specified CSS contains IP address value.
   */
  public function assertElementContainsIpAddress($element) {
    $page = $this->getSession()->getPage();
    // Alternately, substitute with getText() for the label.
    $element_value = $page->find('css', "$element")->getValue();
    $valid_ip_address = filter_var($element_value, FILTER_VALIDATE_IP);
    if ($valid_ip_address === FALSE) {
      throw new Exception("Valid IP address not found in element $element, which had a value of $element_value.");
    }
  }