У меня есть таблица на моей странице, которая должна содержать определенный элемент. Я могу идентифицировать таблицу по ее имени (у нее уникальное имя), а также легко могу идентифицировать элемент. Я хочу заявить, что элемент присутствует в строке r, столбце c таблицы. Каков самый чистый способ сделать это с помощью команд Selenium?

< STRONG> Примечание:

  • Я не хочу использовать больше, чем имя таблицы, чтобы найти ее (мне не нужны все div\div\table\div\tbody\td\tr[r]\td[c] в коде).
  • Я использую Selenium в PHPUnit. Следовательно, я могу использовать логику PHP для этой задачи, хотя мне не нужна сложная логика для такой простой задачи.

Уточнение:

Если элемент в ячейке представляет собой простой текст, я могу получить этот текст следующим образом:

$this->getText("xpath=//table[@name='tableName']//tr[".$r."]//td[".$c."]"); (PHP)

Но что, если в ячейке есть элемент, который не является простым текстом? Что, если элемент является ссылкой (link=anchor) или кнопкой (//button[@type='button']), изображением или чем-то более сложным?

Мне нужно утверждать, что элемент , указанный локатором этого элемента, находится в данной ячейке.

6
snakile 30 Авг 2011 в 12:13

2 ответа

Лучший ответ

Похоже, вы хотите isElementPresent(...locator of element...). Например:

$cell = "//table[@name='tableName']//tr[".$r."]/td[".$c."]";
$foundLink = $this->isElementPresent("xpath=".$cell."/a[.='".linktext."']");
$foundButton = $this->isElementPresent("xpath=".$cell."/button[@type='button']");
$foundImage = $this->isElementPresent("xpath=".$cell."/img[ends-with(@src='pretty-pony.gif')]");

isElementPresent() возвращает true, если это так, false в противном случае.

0
Ross Patterson 3 Сен 2011 в 15:36

Вы можете попробовать Selenium getXpathCount

$ this -> ("xpath = // table [@ name = 'tableName'] // tr [". $ r. "] // td [". $ c. "] // ТЕГ ");
Это вернет количество совпадений, полученных xpath. в вашем случае ноль будет означать неудачу.

0
Raidil142 30 Авг 2011 в 20:06