Search text at XPath of tag (PHP)

Всем привет!!!

Есть следующее дерево:

<div id="menu" class="header_menu">   
   <ul id="v_menu" class="menu">
 

       <li id=" " class="item"   >
             <a id="menu1" class="sitem_href" title=" " href="/blyablya/page/ траляля  " tooltip=" "> траляля </a>
       </li>
       
      <li id=" " class="item"  >
          <a id="menu2" class="sitem_href" title=" " href="/blyablya/page/BUM" tooltip=" "> BUM </a>
       </li>
                  

 

нужно найти элемент "траляля"

для этого использую следуюшуый код:

 

     $count = $this->getXpathCount("//div[@id='menu']/ul/li");

      for ( $i=1; $i<=$count; $i++ ) {

           if($this->isElementPresent("//div[@id='menu']/ul/li[".$i."]/a[text()=' траляля ']")) {
                    print "yes\n";
               }

        }

 

но он ничего не находит...

 

изменение условия в if-e также никчему не привело..

               if($this->isElementPresent("//div[@id='menu']/ul/li[".$i."]/a[contains(text(),' траляля ')]"))

 

Вопросы :
1. Почему?
2. Че делать ?
3. Как с этим бороться ?

 

 

Заранее благодарю.

 

 

Похоже, что ошибка не в Xpath а в коде

     $count = $this->getXpathCount("//div[@id='menu']/ul");

 

упс...
Извините, произошла ошибка при копировании.
Правильный вариант :
$count = $this->getXpathCount("//div[@id='menu']/ul/li");


P.s.
Отредактировано также в вопросе...

Но это сути не меняет...Вопрос остается открытым  Frown

Код вроде бы правильный, надо смотреть на весь HTML. А зачем использовать цикл? для поиска одного елемента

можно попробывать просто проверить нужную ссылку по следующим локаторам

{syntaxhighlighter brush: xml;fontsize: 100; first-line: 1; }//div[@id='menu']//a[contains(text(),"траляля")] или

id=menu1

или

//a[@id=“menu1”]

или

link=траляля{/syntaxhighlighter}

Очень просто, сам цикл будет находится в функции которая будет искать запрашиваемый элемент в подбных деревьях ....

Все-равно не понимаю почему не работает... Yell

я проверил у себя на Java, потому что PHP у меня не настроен и у меня все работает.

код который я тестирую

{syntaxhighlighter brush: xml;fontsize: 100; first-line: 1; }<html> <head></head> <body> <div id="menu" class="header_menu"> <ul id="v_menu" class="menu"> <li id=" " class="item"> <a id="menu1" class="sitem_href" title=" " href="/blyablya/page/ tralyaya " tooltip=" "> tralyaya </a> </li> <li id=" " class="item"> <a id="menu2" class="sitem_href" title=" " href="/blyablya/page/BUM" tooltip=" "> BUM </a> </li> </ul> </div> </body> </html>{/syntaxhighlighter}

код который тестирует приложение

{syntaxhighlighter brush: java;fontsize: 100; first-line: 1; }import com.thoughtworks.selenium.*; import org.junit.After; import org.junit.Before; import org.junit.Test;

public class atinfotest extends SeleneseTestBase {
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium(“localhost”, 4444, “*chrome”, “file:///C:/at.info/support/2.html”);
selenium.start();
}

@Test
public void testUntitled() throws Exception {
	selenium.open("file:///C:/at.info/support/2.html");
	Number count = selenium.getXpathCount("//div[@id='menu']/ul/li");
	System.out.println(count);
	verifyEquals("tralyaya", selenium.getText("//div[@id='menu']/ul/li[1]"));
	verifyEquals("BUM", selenium.getText("//div[@id='menu']/ul/li[2]"));
	for(int i=1;i&lt;=count.intValue();i++){
		if (selenium.getText("//div[@id='menu']/ul/li["+i+"]").contains("tralyaya")){
			System.out.println("yes with getText");
		}
		if (selenium.isElementPresent("//div[@id='menu']/ul/li["+i+"]/a[contains(text(),'tralyaya')]")){
			System.out.println("yes with isElementPresent");
		} 
		
	}
}

@After
public void tearDown() throws Exception {
	selenium.stop();
}

}{/syntaxhighlighter}

что я получаю в результате

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }2
yes with getText
yes with isElementPresent
{/syntaxhighlighter}

 

polusok, Большое спасибо за породеланую вами работу!!!!

В конце-концов  функция getText решила эту проблему.

рад что у вас все получилось!