我一直通过 Behat|Mink 在 BDD 工作。
但是,如果它们不完整,我将无法找到带有 ID 或名称的输入(字段)。
我打算做类似的事情:
$field = $this->getSession()->getPage()->findField( "*first_name*" );
其中“*”表示可以是那里的任何字符串。
问题是我有一个案例我无法确定完整的 ID 原因:
id="<random-string>_<actual-field-name>_<random-number>"
知道我该怎么做吗?
我试过什么
- get it through label (for some reasons there are some labels that dont have 'for' attribute and sometimes the name is a sentence and not an simple name)
- get it through css/classes (to many variables)
编辑:
我创建了一个 php 函数来读取属性并返回预期属性的值。
/**
*
* @param string $haystack The complete html
* @param string $needle The string with the part of the attribute value
* @param string $tag The tag of where the attribute should belong
* @param string $attr The attribute to ifnd
* @return string
*/
protected function findCompleteAttribute( $haystack, $needle, $tag = null, $attr = 'id' )
但是,如果有其他字段(例如:隐藏的登录表单)并且针也在这些输入中,如果它们是第一个,它将获取它们。
所以我需要指定表单,但是,再一次,我没有办法通过名称找到表单:
$field = $this->getSession()->getPage()->find( 'named', array( 'form', $formName ) );