以下解決方案是專門針對我的標記代碼,但應很容易適應你的。您可能需要修改它。
假設在文本框中選擇自動建議的選項。在用戶的擊鍵之後,自動消除選項顯示爲<li>
元素。 <li>
元素在頁面中呈現,但是它的內容在開始時是空的,所以沒有什麼可以被behat選擇。爲了解決這個問題,在<li>
標籤之間的非現有內容被標記爲<label>
。在這種自動建議字段
用戶類型:
<input name="brand" type="text" />
如果出現自我暗示數據:
<ul>
<li><label>{{ suggestion }}</label></li>
</ul>
小黃瓜:
When I fill in "brand" with "S"
And I wait 1 seconds
Then I select autosuggestion option "Sula"
And I wait 1 seconds
......
FeatureContext:
/**
* @Given /^I wait (\d+) seconds$/
*/
public function iWaitSeconds($seconds)
{
sleep($seconds);
}
/**
* @Then /^I select autosuggestion option "([^"]*)"$/
*
* @param $text Option to be selected from autosuggestion
* @throws \InvalidArgumentException
*/
public function selectAutosuggestionOption($text)
{
$session = $this->getSession();
$element = $session->getPage()->find(
'xpath',
$session->getSelectorsHandler()->selectorToXpath('xpath', '*//*[text()="'. $text .'"]')
);
if (null === $element) {
throw new \InvalidArgumentException(sprintf('Cannot find text: "%s"', $text));
}
$element->click();
}
https://github.com/Behat/MinkSelenium2Driver/blob/v1.1.1/src/Behat/Mink/Driver/Selenium2Driver.php#L615 這是我煩惱的原因 - 水貂在場上產生變化事件,所以我想這個問題是在我的js。 – 2014-11-28 06:59:29