Behat / Mink检索输入类型文件名

时间:2016-08-30 10:36:33

标签: file behat mink

您知道如何从Behat / Mink / Element / NodeElement检索输入类型文件名吗?

我有一个简单的测试html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="file" id="file"/><br/>
        </form>
    </body>
</html>

假设我附加了一个名为 goodCoverArt.jpg 的文件,我可以使用chrome控制台中的以下命令检索它的文件名:

$x('//input[@type="file"]')[0].files[0].name
"goodCoverArt.jpg"

但是如果我在上下文类中使用以下函数:

// Search for that file name label in the page to confirm the execution of the file attachment.
$uploadElement = $this->getElementWhenVisible('xpath', "//div[@id='filename' and contains(.,'$fileName')]");

 /**
 * @param string $selector xpath|css|...
 * @param string $locator link id, title, text or image alt
 * @param int $tries
 *
 * @return NodeElement|mixed|null $element
 */
public function getElementWhenVisible($selector, $locator, $tries = 100)
{
    $element = null;
    $this->spin(
        function () use ($selector, $locator, &$element) {

            $element = $this->find($selector, $locator);
            if(!($element instanceof NodeElement) || !$element->isVisible())
            {
                throw new Exception("Element not visible: $selector $locator");
            }
        }, $tries);

    return $element;
}

如何从 $ uploadElement 中检索相同的信息?

1 个答案:

答案 0 :(得分:0)

显然我找到了答案: 拥有 Behat / Mink / Element / NodeElement 可以调用 getValue ,如下所示:

$fileName = $uploadElement->getValue();
echo $fileName; // This will print string: goodCoverArt.jpg

将返回附件名 goodCoverArt.jpg