का उपयोग करके फ़ॉर्म सबमिट करने के बाद ब्राउज़र प्रतिक्रिया के लिए प्रतीक्षा करें, मेरे परीक्षण में sleep()
का उपयोग करने के अलावा, मुझे आश्चर्य है कि अगर कोई स्पष्ट रूप से फ़ॉर्म फॉर्म जमा करने के लिए एक बेहतर रणनीति के बारे में जानता है (POST) मेरे दावे के साथ जारी है। फेसबुक से php-webdriver एक साथ phpunit का उपयोग करके, मेरा परीक्षण कैसा दिखता है, इसका एक बहुत ही संघनित संस्करण यहां दिया गया है)।php-webdriver: क्लिक()
function test_form_submission()
{
// setup
$web_driver = new WebDriver();
$session = $web_driver->session();
$session->open('http://example.com/login');
// enter data
$session->element('css selector', 'input[name=email]')->value(array('value' => str_split('[email protected]')));
$session->element('css selector', 'input[name=password]')->value(array('value' => str_split('testpassword')));
// click button to submit form
$session->element('css selector', 'button[name=submit]')->click();
// How do I wait here until the click() above submits the form
// so I can check that we correctly arrives at the destination below
// without resorting to sleep()?
// Confirm that login was successful because we landed on account page
$this->assertSame('http://example.com/account', $session->url());
// teardown
$session->close();
}
तो, जब आप अब इस कोड को निष्पादित करते हैं, तो दूसरी पंक्ति में अंतिम यूआरएल (जोर) में http://example.com/account की बजाय http://example.com/login देता है? संभावित रूप से सेलेनियम सर्वर को तत्व की तलाश करने से पहले पेज लोड होने तक स्वयं से बाहर निकलना चाहिए। इसके अपवाद अतुल्यकालिक अनुरोध हैं, लेकिन आपका बहुत समकालिक दिखता है। आपको याद है, मैं सेलेनियम – qrazi
ड्राइव करने के लिए PHPUnit_Selenium का उपयोग कर रहा हूं। असल में मैं उस पल में एक स्क्रीनशॉट भी ले सकता हूं, और देख सकता हूं कि मैं अभी भी example.com/login पर हूं, लेकिन अगर मैं 1 सेकंड के लिए सोता हूं, तो जोर देता है, और स्क्रीनशॉट दिखाता है कि पृष्ठ अब उदाहरण पर है। com/खाता। मैंने पढ़ा है कि PHPUnit_Selenium सेलेनियम 2 (उर्फ वेबड्राइवर) चलाने के लिए काफी नहीं था इसलिए मैं ऊपर के दृष्टिकोण के साथ गया। –