मान लें कि आप सेलेनियम ड्राइवर का उपयोग कर रहे हैं, तो आप लिंक पर "क्लिक करें" और $this->getSession()->wait(30)
डाउनलोड समाप्त होने तक फ़ाइल के लिए डाउनलोड फ़ोल्डर को चेक कर सकते हैं।
यह सबसे आसान समाधान होगा। वैकल्पिक रूप से आप सभी अनुरोधों को देखने के लिए BrowserMob जैसे प्रॉक्सी का उपयोग कर सकते हैं और फिर प्रतिक्रिया कोड सत्यापित कर सकते हैं। लेकिन वह अकेले के लिए वास्तव में एक दर्दनाक रास्ता होगा।
फ़ाइल डाउनलोड होने की जांच करने का सबसे आसान तरीका मूल दावे के साथ एक और कदम परिभाषित करना होगा।
/**
* @Then /^the file ".+" should be downloaded$/
*/
public function assertFileDownloaded($filename)
{
if (!file_exists('/download/dir/' . $filename)) {
throw new Exception();
}
}
यह स्थिति में समस्याग्रस्त हो सकता है जब आप एक ही नाम वाली फ़ाइल डाउनलोड करते हैं और ब्राउज़र इसे एक अलग नाम के नीचे सहेजता है। एक समाधान के रूप में आप जानकारियों की सूची को साफ़ करने के लिए @BeforeScenario
हुक जोड़ सकते हैं।
एक और मुद्दा डाउनलोड डीआईआर होगा - यह अन्य उपयोगकर्ताओं/मशीनों के लिए अलग हो सकता है। इसे ठीक करने के लिए आप अपने behat.yml
में डाउनलोड निर्माता को संदर्भ कन्स्ट्रक्टर के तर्क के रूप में पास कर सकते हैं, इसके लिए docs पढ़ें।
लेकिन सबसे अच्छा तरीका सेलेनियम को डाउनलोड डीआईआर निर्दिष्ट करने के लिए कॉन्फ़िगरेशन पास करना होगा ताकि यह सुनिश्चित किया जा सके कि यह हमेशा स्पष्ट है और आपको पता है कि कहां खोजना है। मुझे यकीन नहीं है कि यह कैसे करें, लेकिन quick googling से ऐसा लगता है।
स्रोत
2014-07-24 10:46:57
डाउनवोट के लिए कोई औचित्य ?? यह एक पूर्ण मजाक नहीं है .. वास्तव में .. –