如何检查 Behat/Mink 中的(任何)IP 地址?
How to check for (any) IP address in 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
所以有句号;不明白为什么"contains"看不到。
我也试过这样检查:
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="">
这是我最终使用的代码:
/**
* @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.");
}
}
我正在使用 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
所以有句号;不明白为什么"contains"看不到。
我也试过这样检查:
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="">
这是我最终使用的代码:
/**
* @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.");
}
}