Мне нужно проверить текст/сообщения внутри iframe с именем/id. После изучения я обнаружил это решение для добавления id/name и использования switchToIFrame (id/name). Как установить id/name в элемент узла в норке? SetAttribute() не поддерживается в nodelement, а setValue() не поддерживается для фрейма.Mink/behat iframe без id/name
<html>
<body>
<div class="div1">
<iframe class="xyz">
<!DOCTYPE html>
<html>
<body>
<div class="frame"></div>
<p>The paragraph1</p>
</body>
</html>
</body>
</html>
Мой контекст файл
public function iShouldSeeDescription($arg1)
{
$expected = "The paragraph1";
$iframe=$this->getSession()->getPage()->find ('xpath', '//div[contains(@class,"div1")]/iframe[contains(@class,"xyz")]');
$iframe->setAttribute('id', 'iframe_id');
$iframeId = $iframe->getAttribute('id');
$this->getSession()->switchToIframe("$iframeId");
$actual = $this->getSession()->getPage()->find('xpath', '//div[@class="frame"]/p[1]');
if ($actual === null) {
throw new \InvalidArgumentException (sprintf ('null:%s', $arg1));
}
if (!($actual === $expected)) {
throw new \InvalidArgumentException (sprintf ('The Acutal description:%s and expected description:%s did not match ', $actual, $expected));
}
}
Я предполагаю, что это всего лишь метод тестирования, иначе переключитесь на iframe, и проверки должны быть разными шагами, а ожидаемый текст и селектор, содержащий этот текст, должны быть параметрами метода. – lauda