behat를 사용하여 테스트를 작성 중이며 부트 스트랩 모달 내부의 입력에 fillField를 호출하려고 할 때 문제가 있습니다. 나는이 입력 셀레늄에 fillField를 보낼 때 는 예외 말이 던졌습니다 : 나는 (셀레늄 IDE를 통해) 셀레늄을 만든Behat/Mink/Selenium2 요소가 표시되지 않습니다.
Element is not currently visible and so may not be interacted with
테스트 수동과 같은 필드라는 형식을하고 그것을 잘 작동했다.
$page = $this->getSession()->getPage()
$page->fillField("id_item", $value);
$value
은 내 테스트의 매개 변수입니다. 몇 초 기다리는 함수를 호출하려고했지만 잘 작동하지 않았습니다.
UPDATE :
시나리오 :
Scenario: Realizar Pedido de Compra
Given I am on "/"
When I fill the form with "{\"id\": 1, \"items\":[{\"id_item\": 1}]}"
Then I should see "Ok"
내 FeatureContext : 내 클래스 FormHelper에서
/**
* @When I fill the form with :arg1
*/
public function iFillForm($json) {
$formHelper = FormHelper::getInstance($this->getSession());
$formHelper->fill($json);
}
:
public function fill($json) {
$handler = new SelectorsHandler();
$handler->registerSelector("css", new CssSelector());
$fileJson = json_decode($json, true);
$page = $this->session->getPage();
foreach ($json as $key => $value) {
if (is_array($value)) {
$addSubGrid = $page->find("css", "#btn-plus-" . $key);
if ($addSubGrid != null) {
$subGrid = $page->find("css", "#" . $key);
$formId = $subGrid->getAttribute("data-form");
$ok = $page->find("css", "#$formId .btn-ok");
foreach ($value as $formItem) {
$itemFilled = array();
$addSubGrid->click();
$this->session->wait(
1000, "$('#modal-$formId').is(':visible')"
);
$this->fillForm($page, array("form-item" => $formItem), $itemFilled, false);
$ok->press();
}
}
} else {
$page->fillField($key, $value);
}
}
$addSubGrid
var은 모달을 보여주는 elment입니다. 테스트를 실행하면 모달이 열리지 만 $page->fillField($key, $value)
에 들어가면 작동하지 않습니다.
UPDATE는 나는 장애인 필드를 채우기 위해 시도 된 것으로 나타났습니다. 나는 그것을 가능하게했고 문제는 지금 외부의 것들과 모달 안에있는 필드를 채우지 못한다는 것이다.
시나리오 코드를 표시 하시겠습니까? –
안녕하세요. 나는 그것을 실행하는 시나리오와 코드를 추가했다. – Augusto
@ ThiagoFrança 나는 Behat으로부터 하나를 사용한다. (나는 그들의 문서를 따라 갔다.) @IanBytchek는'$ addSubGrid->를 사용하여 모달을 연 후'fillField'에 에러가 발생한다. click()' – Augusto