Это вопрос к синтаксису XPath больше, чем что-либо еще.
У меня есть несколько страниц товара на сайте, на которых есть несколько товаров на страницах каждого товара.Каждый продукт имеет уникальный идентификатор для кнопки «Добавить в корзину».Я пытаюсь вернуть все уникальные идентификаторы, чтобы я мог добавить пару продуктов в сумку.Поиск с помощью XPath кажется правильным решением для этого.У меня есть следующий код для запроса HTML с XPath и возвращения уникальных идентификаторов:
$XPATH_COUNT = $sel->get_xpath_count("//div[\@class='quick-info-link']/a");
@my_array;
$my_array[0] = $sel->get_attribute("//div[\@class='quick-info-link']/a/\@id");
print $my_array[0];
$count = 0;
while( $count < $XPATH_COUNT )
{
$arrayCount=0;
$a = "//";
foreach( @my_array )
{
$tmp = "a[\@id!='" . $my_array[$arrayCount] . "' and ";
$b .= $tmp;
$d .= "]";
$arrayCount++;
}
$c = "img[\@alt='Quick Shop']";
$e = $c . $d . "/\@id";
$xpath_query = $a . $b . $e;
$my_array[$count] = $sel->get_attribute($xpath_query);
$count++;
}
Выход первого запуска этого запроса XPath выглядит так:
//a[@id!='quickview-link-PROD7029' and img[@alt='Quick Shop']]/@id
Что правильно возвращает quickview-link-PROD6945.Второй запуск приводит к следующему:
//a[@id!='quickview-link-PROD7029' and a[@id!='quickview-link-PROD6945' and img[@alt='Quick Shop']]]/@id
, который выдает ошибку в моем окне терминала SeleniumRC с ошибкой: элемент [..xpath query ..] не найден в сеансе.о возможном использовании индексов (т.е. добавление [i]
в конец запроса XPath) для доступа к элементам на странице, однако это не то, что мне помогло в Selenium.
Любая помощьбыло бы замечательно.Спасибо за ваше время, Стив