Есть ли способ проверить ссылку на изображение с помощью Symfony / Panther - PullRequest
0 голосов
/ 25 июня 2019

спасибо за помощь в этом :)

Я разрабатываю серию тестов в приложении Symfony с Symfony / Panther.Я ищу способ проверить, если мой логотип перенаправить на правильную страницу.На мой взгляд, я должен проверить ссылку, а затем щелкнуть по ней, чтобы проверить перенаправление.Документация Panther довольно специфична для тестирования ссылок, см. Здесь:

https://symfony.com/blog/introducing-symfony-panther-a-browser-testing-and-web-scrapping-library-for-php

Я также видел, как найти изображение через DomCrawler np с этим ...

SOя попытался адаптировать метод тестирования ссылок к изображению, конечно, это не сработало, потому что изображение не является строкой, как ожидалось методом

Так что если у кого-то есть идея, как проверить перенаправлениена ссылку на изображение Это будет здорово.Заранее спасибо

<?php
namespace App\Tests;

 use Symfony\Component\Panther\PantherTestCase;  

 class assertLogoRedirectTo extends PantherTestCase   
{
    public function test()
    {

        $client = static::createPantherClient();
        $crawler = $client->request('GET','https://my.sibluconnect.com');        

        $client->waitFor('.login');        
        $image = $crawler->selectImage('siblu')->image(); 
        $link = $crawler->selectLink($image)->link();        
        $crawler = $client->click($link);       

    }
}

Запуск теста показывает эту ошибку:

DevTools прослушивает ws: //127.0.0.1: 12947 / devtools / browser / d3a0e57f-2b00-4eb3-97e3-64986cf0495e E 1/1 (100%) / test1 // test2 // test2 // test3 // test4 /

Время: 11,17 секунд, Память: 38,00 МБ

Произошла 1 ошибка:

1) App \ Tests \ assertLogoIsvisible :: test Объект класса Symfony \ Component \ Panther \ DomCrawler \ Image не может быть преобразован в строку

1 Ответ

0 голосов
/ 25 июня 2019

Редактируйте мой пост ... Я нашел способ сделать это.

Изображение не является ссылкой, ссылка является <a href> или <button>, поэтому тест должен искать изображение в качестве ссылки. Поэтому я попробую другой метод, который пытается нацелить ссылку через ее положение на странице. Поскольку эта ссылка является моим логотипом, она является первой <a href> на странице.

Вот код, который я пробовал, и он работает просто отлично !!!

namespace App\Tests;

use Symfony\Component\Panther\PantherTestCase;  

class assertLogoRedirectTo extends PantherTestCase   // Success
{
public function test()
{

    echo'/test1/';
    $client = static::createPantherClient();
    $crawler = $client->request('GET', 'https://my.sibluconnect.com/fr/');       

    $link = $crawler->filter('a')->eq(0)->attr('href');
    $crawler = $client->request('GET',$link);
    $this->assertSame('http://sibluconnect.com/', $client->getCurrentURL());


 }
}

Надеюсь, это поможет кому-то в будущем;)

...