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

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

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

Ответы [ 2 ]

0 голосов
/ 03 сентября 2011

Звучит так, как вы хотите 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 голосов
/ 31 августа 2011

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

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

...