Селен: Как утверждать, что определенный элемент присутствует в определенной ячейке определенной таблицы?

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

Примечания:

  • Я не хочу использовать больше, чем имя таблицы, чтобы найти его (я не хочу, чтобы все 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'] ) или изображение или что-то более сложное?

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

Похоже, вы хотите 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 если нет.

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

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