ऐसा लगता है कि कुंजीपटल के बारे में शिकायत करने वाली बहुत सी पोस्ट इरादे के रूप में काम नहीं कर रही हैं और कुछ ड्राइवर इसका समर्थन नहीं करते हैं। उदा .:
Goutte - Keyboard manipulations are not supported by Behat\Mink\Driver\GoutteDriver
विशेष रूप से सेलेनियम चालक यह आदेशों है चलाने के लिए कस्टम जे एस पुस्तकालय का उपयोग करता है, लेकिन यह काम करने के लिए प्रतीत नहीं होता। मैंने भाग्य के बिना $this->getSession()->getDriver()->keyPress()
और $element->getPress()
दोनों का उपयोग करने का प्रयास किया है।
https://github.com/Behat/MinkSelenium2Driver/blob/master/src/Behat/Mink/Driver/Selenium2Driver.php#L815
https://github.com/Behat/MinkSelenium2Driver/blob/master/src/Behat/Mink/Driver/Selenium2/syn.js
क्या दिलचस्प है अभी तक Selenium2 कोड बेस में कुंजी दबाने घटना के लिए कोई इकाई परीक्षण देखते हैं कि है (ताकि मुझे लगता है यह विकास में वर्तमान में है)।
तो, इस पल के लिए, Is it possible to simulate key press events programmatically? से प्रमुख घटनाओं के जावास्क्रिप्ट अनुकरण का उपयोग करने के लिए पर्याप्त समाधान है (यदि आप jQuery का उपयोग नहीं कर रहे हैं तो वैकल्पिक विकल्प के लिए इसे देखें) और बेहट मिंक का मूल्यांकन स्क्रिप्ट फ़ंक्शन।
आप परीक्षण करने के लिए सीधे PHPUnit उपयोग कर रहे हैं:
/**
* @Given /^(?:|I) manually press "([^"]*)"$/
*/
public function manuallyPress($key)
{
$script = "jQuery.event.trigger({ type : 'keypress', which : '" . $key . "' });";
$this->getSession()->evaluateScript($script);
}
:
$key = 'a';
$script = "jQuery.event.trigger({ type : 'keypress', which : '" . $key . "' });";
$this->getSession()->evaluateScript($script);
या आप ककड़ी उपयोग कर रहे हैं, तो आप इस समारोह में जोड़ सकते हैं अपने FeatureContext.php फ़ाइल में जोड़ना और इसे अपनी फीचर फ़ाइल में इस तरह इस्तेमाल करें:
Given I manually press "a"
समाधान के रूप में जावास्क्रिप्ट का उपयोग करने के लिए, कुछ ड्राइवरों की आवश्यक कुंजीपटल करने के लिए जावास्क्रिप्ट का उपयोग करें। उदा .:
https://github.com/Behat/MinkZombieDriver/blob/master/src/Behat/Mink/Driver/ZombieDriver.php#L819