2014-01-30 3 views
0

내부에 'a'가있는 'h2'요소가 많이 있습니다. 난 그냥 얻을 수 있습니다 원하는 건 모든 '은'을 'H2'phpunit selenium2 - 복수 요소 선택

나는이 같은 시도에 :

public function testBreakingNewsH2(){ 

    $this->url('index.php'); 

    $h2Elements = $this->byCssSelector('h2')->byCssSelector('a')->text(); 
    $this->assertEquals('Breaking News', $h2Elements); 
} 

난 단지 수를 'A'내부 'H2'처음.

공공 기능 testHomePgaeH2() {

$this->url('index.php'); 
    $h2Elements = $this->elements($this->using('css selector')->value('h2')); 

    $this->assertContains('Breaking News', $h2Elements); 
    $this->assertContains('Analysis', $h2Elements); 
    $this->assertContains('Calendar', $h2Elements); 
    $this->assertContains('Studies', $h2Elements); 

: 나는 모든 'H2'링크가 나는 이런 식으로 뭔가를 시도했다 ('A'를 포함하는 모든 'H2'요소를 얻을) 존재하는 것을 확인해야 }

이 방법이 효과가 없지만 문제가되는 가장 좋은 예입니다. 물론 나는이 같은 시도 할 수 있습니다 :

$this->assrtRegExp('/xxxx/i', $this->source()); 

을하지만 난 모든 소스를 복용하지 않고 가능한 한 청결하게합니다.

알려주세요. 감사합니다.

답변

1

는이 코드를 CSS를 선택하여 요소의 목록을 얻을 :

$elements = $this->elements($this->using('css selector')->value('h2 a')); 
foreach ($elements as $i=>$element){ 
    echo $element->text() . "\n"; 
} 

하는 모든 h2a 포함되어 있는지 확인하기 위해, 당신은 CSS를 선택 h2 모든 요소를 ​​찾을 수에 의해 발견 다음을 계산하려면 h2 a 그리고 다시 계산하십시오. 그럼 비교해 봐. 또한 모든 h2 a 요소를 반복하고 배열 또는 regexp로 URL을 확인할 수 있습니다. 그것은 당신이 원하는 것에 달려 있습니다.

+0

감사합니다. 어쩌면 어떻게 assertContains 특정 링크 이름을 확인할 수 있습니다 "Breaking News"내 사이트에서 h2 안에 링크가 있는지 확인 싶어요. 문제는 assertEqual을 foreach에 넣으면 실패합니다. '$ this-> assertContains ('속보', $ h2Elements)를 시도해보십시오. '라고 말합니다 : 배열에'속보 '가 있다고 주장하지 못했습니다. – Dennis

+0

배열 만들기 : $ titles [] = $ element-> text(); (foreach에서) 다음 $ this-> assertContains ('속보', $ 제목); – rNix

+1

감사합니다, 나는 정말 바보, 나는 내가 정규 PHP를 사용할 수 있다는 것을 잊어 버렸다. – Dennis