سؤال

أي شخص يعرف كيفية استخدام السيلينيوم 2 مع phpunit؟ هل هناك أي عينات من السيلينيوم 2 في PHP؟

هل كانت مفيدة؟

المحلول

تحديث سريع: Phpunit الآن يدعم السيلينيوم 2


في وقت كتابة هذا التقرير ، لا يدعم Phpunit السيلينيوم 2.

PHP-Webdriver من عند موقع التواصل الاجتماعي الفيسبوك يتيح أن يتم استدعاء واجهة برمجة تطبيقات WebDriver الكاملة من PHP بطريقة أنيقة. يقتبس:

يطلب منك معظم العملاء أولاً قراءة البروتوكول لمعرفة ما هو ممكن ، ثم دراسة العميل نفسه لمعرفة كيفية تسميته. هذا يأمل في القضاء على الخطوة الأخيرة.

يتم استخدامه عن طريق بدء تشغيل خادم السيلينيوم 2 ، والذي يوفر الواجهة على localhost:4444/wd/hub.

/usr/bin/java -jar /path/to/selenium-server-standalone-2.7.0.jar

ثم تشغيل رمز اختبار PHP ، والذي يستدعي تلك الواجهة. علي سبيل المثال:

<?php

require '/path/to/php-webdriver/__init__.php';

$webdriver = new WebDriver();

$session = $webdriver->session('opera', array());
$session->open("http://example.com");
$button = $session->element('id', 'my_button_id');
$button->click();
$session->close();

ال WebDriver API يتم تعيينه لأساليب PHP ، قارن الاتصال click تشغيل element في المثال باستخدام مكالمة API العنصر/النقر في الوثائق.

يمكن بعد ذلك لف رمز الاختبار في اختبارات phpunit العادية.

هذا ليس دعم phpunit الأصلي ، لكنه نهج قوي للغاية.

نصائح أخرى

الرجاء إلقاء نظرة على http://code.google.com/p/php-webdriver-bindings/ . هذه هي مكتبة PHP التي تتواصل مع Selenium WebDriver Server باستخدام JSONWIREPROTOCOL. هذا هو الإصدار المبكر ولكنه يعمل.

حاليا (2017) أوصي باستخدام PHP-Webdriver, ، ما هو AFAIK الأكثر ميزة لغة PHP كاملة ملزمة للتفاعل مع selenium webdriver.

تمت إعادة كتابة هذه المكتبة في عام 2014 لدعم Selenium 2 ، وتعتمد API في الغالب على روابط Java WebDriver الرسمية. هذا يعني أنه يمكنك أيضًا الاستفادة من أمثلة التعليمات البرمجية المكتوبة في Java ، حيث يمكن تتبعها عادة في PHP. كتبت أيضًا بطريقة حديثة OOP وتتبع مساحات أسماء PSR-4 القياسية وكذلك معايير ترميز PSR-2.

أود أن أوصي بهذه المكتبة phpunit-selenium - كما تم تصميمه في الأصل للسيلينيوم 1 (على الرغم من أنه يدعم هذه الأيام السيلينيوم 2) وواجهة برمجة التطبيقات الخاصة به ضيقة بشدة على phpunit. كما أنه لا يدعم بعض ميزات WebDriver وليست محدثة مع Upcomin مواصفات W3C WebDriver.

PHP-Webdriver من ناحية أخرى مكتبة مستقلة ، ولكنها التكامل مع phpunit بسيط للغاية - أو يمكنك استخدام الأدوات الموجودة مثل ستيوارد, ، والذي يتضمن جميع تكامل phpunit ويوفر أيضًا طبقة راحة لطيفة وعلى سبيل المثال. السماح ببساطة بإجراء اختبارات متعددة بالتوازي (دون الحاجة إلى أدوات أخرى مثل الباريات).

هناك أيضًا خيارات تكامل إطار اختبار أخرى مذكورة على مشروع الصفحة الرئيسية.

يعيش رمز تكامل السيلينيوم phpunit كمشروع منفصل في جيثب, ، بقدر ما أستطيع أن أرى أنه لا يدعم السيلينيوم 2 ، وبالتالي فإن الإجابة على سؤالك ستكون - لا ، لا يمكنك استخدام السيلينيوم 2 مع phpunit.

ولكن يمكنك استنساخ شجرة المصدر وجعلها تعمل مع السيلينيوم 2.

أنشأنا مكتبة لذلك ، آمل أن يساعد ذلك. كما أنه يستخدم بروتوكول سلك JSON ، لكننا كنا نهدف إلى جعله متوافقًا مع الأمثلة من اللغات الأخرى ، وبالتالي فإن بناء الجملة سيكون متشابهًا جدًا. ها هو الرابط: https://github.com/nearsoft/php-seleniumclient

إذا أعجبك ذلك ، شاركه ، وتحسينه أو مفترقه :)

التحيات ، مارك.

يتم استضافة روابط WebDriver Phpunit على رمز Google. هناك شيء نحتاج إلى فهمه بما يتجاوز هذا.

  1. يحتاج phpunit إلى تثبيت. (إما من خلال حزمة الكمثرى أو تنزيل وتثبيت يدويًا)
  2. يجب تنزيل وتثبيت IDE PHP مثل Eclipse PDT.
  3. يجب تشغيل الخادم السيلينيوم المختل

كتبت برنامجًا تعليميًا حول كيفية استخدام Selenium 2 ، Wrapper Facebook ، ابحث عنه هنا:

http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html

أوصيت باستخدام Menta, ، إطار السيلينيوم 2 الذي يتطلب WebDriver. كلتا الحزمتين متوافقة مع PSR-0 ، بحيث يمكنك استخدامها مع الملحن. يمكنك تكوين السيلينيوم مع phpunit.xml. هنا مثال

<phpunit bootstrap="tests/bootstrap.php"
         backupGlobals="false" backupStaticAttributes="false"
         strict="true" verbose="true">
    <php>
        <var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" />
        <var name="testing.selenium.browser" value="firefox" />
        <var name="testing.selenium.windowPosition" value="0,0" />
        <var name="testing.selenium.windowSize" value="1280x1024" />
        <var name="testing.selenium.windowFocus" value="1" />
        <var name="testing.selenium.timeoutImplicitWait" value="10000" />
    </php>
    <testsuites>
        <testsuite name="Integrationstests">
            <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory>
        </testsuite>
    </testsuites>
    <logging>
        <log type="junit" target="build/logs/junit.xml"/>
    </logging>
</phpunit>

يقرأ ملف bootstrap متغيرات التكوين من testing.selenium.*، حتى تتمكن من ضبط متغيرات جديدة بسهولة.

<?php

\Menta_ConfigurationPhpUnitVars::addConfigurationFile(__DIR__ . '/../phpunit.xml');

$configuration = \Menta_ConfigurationPhpUnitVars::getInstance();
\Menta_SessionManager::init(
    $configuration->getValue('testing.selenium.seleniumServerUrl'),
    $configuration->getValue('testing.selenium.browser')
);

الآن يمكنك تنفيذ Testcases بسهولة. هنا مثال

<?php

namespace tests\integration;

use WebDriver\LocatorStrategy;

class TestSearch extends \PHPUnit_Framework_TestCase
{
    public function testGoogle()
    {
        $session = \Menta_SessionManager::getSession();
        $session->open('http://www.google.de');
        $element = $session->element(LocatorStrategy::NAME, 'q');
        $this->assertTrue($element->displayed());
    }
}

تحتوي حزمة Menta أيضًا على ملفان تجريبيان ، يقعان هنا

اليوم أخذ قفزة عميقة في السيلينيوم و phpunit. هذا ممكن وقد تجد بعض الأمثلة والتعليمات هنا:http://phpunit.de/manual/current/en/selenium.html

حصل منشئ Phpunit على بعض الأمثلة اللطيفة على واجهة برمجة التطبيقات. مع القليل من التجريب وقراءة رسالة الخطأ ، سوف تتجه. لم أجد مكتبة رائعة بنفسي أيضًا.

https://github.com/sebastianbergmann/phpunit-selenium/blob/master/tests/selenium2testcasetest.php

كآخر برنامج تعليمي من Nettuts الذي يساعدك على طول الأساسيات:http://net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit/

نعم، Selenium 2 (WebDriver) و PHPUnit tests الأمر بسيط. لكن هل أريد أن أقدم لكم نصيحة بأن أول ما يجب أن تحاوله Selenium IDE لأنك بحاجة إلى توقع في selenium command. إذا كنت تتوقع في Selenium command لو ذلك selenium 2 (Webdriver) و PHPUnit test سيكون أكثر بساطة بالنسبة لك.

يمكنك المحاولة selenium IDE دروس على هنا ويمكنك التعلم selenium 2 (Webdriver) and PHPUnit في هنا.

أنا أعمل على السيلينيوم 2php. لدي الكثير من الاختبارات للسيلينيوم 1 المسجلة مع IDE السيلينيوم. الآن يحول اختبارات HTML إلى السيلينيوم 2. في الواقع ، لـ phpunit_extensions_selenium2testcase. سأقوم بتنفيذ المزيد من الأوامر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top