Search text at XPath of <a> tag (PHP)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
16.10.2011
Всем привет!!!
Есть следующее дерево:
<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. Как с этим бороться ?
Заранее благодарю.
16.10.2011
#1
Похоже, что ошибка не в Xpath
Похоже, что ошибка не в Xpath а в коде
$count = $this->getXpathCount("//div[@id='menu']/ul");
17.10.2011
#2
ошибка при копировании
упс...
Извините, произошла ошибка при копировании.
Правильный вариант :
$count = $this->getXpathCount("//div[@id='menu']/ul/li");
P.s.
Отредактировано также в вопросе...
Но это сути не меняет...Вопрос остается открытым 
17.10.2011
#3
А зачем использовать цикл? для поиска одного елемента
Код вроде бы правильный, надо смотреть на весь HTML. А зачем использовать цикл? для поиска одного елемента
можно попробывать просто проверить нужную ссылку по следующим локаторам
//div[@id='menu']//a[contains(text(),"траляля")] или id=menu1 или //a[@id="menu1"] или link=траляля
17.10.2011
#4
Очень просто, сам цикл будет
Очень просто, сам цикл будет находится в функции которая будет искать запрашиваемый элемент в подбных деревьях ....
Все-равно не понимаю почему не работает... 
18.10.2011
#5
проверка на Java
я проверил у себя на Java, потому что PHP у меня не настроен и у меня все работает.
код который я тестирую
<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>
код который тестирует приложение
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<=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();
}
}что я получаю в результате
2 yes with getText yes with isElementPresent







