2017-05-09 4 views
0

이 줄 : 내 HTML 문서에서 실제로 여러 input[@name="address_add[0][city]"] 있기 때문에behat fillField xpath주는 오류가 있습니까? 코드의

$this->fillField('xpath','//fieldset[@id="address-container"]/input[@name="address_add[0][city]"]', "Toronto"); 

것은 나에게 내 fillField에서 XPath를 사용하려는 이유는이 오류

Form field with id|name|label|value|placeholder "xpath" not found. (Behat\Mink\Exception\ElementNotFoundException) 

을주고있다. 나는 xpath가 나를 채울 필드를 구체적으로 목표로 삼을 것이라고 상상한다.

input[@name="address_add[0][city]"]의 자손을 작성하는 가장 좋은 방법은 fieldset[@id="address-container"]입니까?

답변

0

라이트 방법으로는이 방법을 사용하지 않습니다.

여기에서 알 수 있듯이 xpath은 선택자로 간주됩니다. 방법은이 개 매개 변수를 예상 :
identifier - 속성 중 하나의 값 - | XPath는 다음

당신이 CSS를 사용하려면 값으로 설정해야합니다 문자열 '아이디 | 이름 | | 라벨 값'
value 먼저 find 방법을 사용해야합니다. 예를 들어

:

$this->find('xpath', 'your_selector')->setValue('your_string'); 

주의 사항 즉 null를 반환 할 수 있습니다 찾아 setValue을 사용하면 치명적인 예외가 발생합니다.

#address-container input[name*=city] - this with css 

또는

//fieldset[@id="address-container"]//input[contains(@name, 'city')] - this with xpath 

당신이 활용할 수 있는지 확인하십시오 :

$field = find('xpath', 'your_selector'); 

if ($field === null) { 
    // throw exception 
} 

$field->setValue('your_string'); 

또한 당신의 선택은 같이 쓸 수있다 :

이 뭔가를해야한다 요 ur IDE 편집기를 사용하여 의심스러운 경우 메서드를 사용하면 예상되는 매개 변수와 메서드가 반환 할 PHP 문서를 찾아야합니다.

당신이 CSS/XPath를 사용하는 경우 많은 당신은 자동으로 감지 선택의 유형과 요소를 기다리는 또 다른 방법을 정의 할 수 $this->find($selector);

처럼 사용하고를 처리 할 수있는 find 메소드를 오버라이드 (override) 할 수 예를 들어 waitForElement($selector)과 같이 한 곳에서 예외가 발생하며 최대 10 초까지 조건부 대기를 포함 할 수 있으며 찾을 수없는 경우 예외를 throw합니다.