लोड करने के लिए प्रतीक्षा कर रहा है कभी-कभी सेलेनियम 2.41 के साथ किए गए मेरे परीक्षण में और फ़ायरफ़ॉक्स 28 के साथ परीक्षण किया गया निष्पादन पेज लोड होने के लिए प्रतीक्षा कर रहा है।फ़ायरफ़ॉक्स वेबड्राइवर पृष्ठ को
यह इंतजार शर्त है:
int time = 30;
WebDriverWait wait = new WebDriverWait(webDriver, time);
ExpectedCondition<Boolean> pageLoadCondition = new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
}
};
wait.until(pageLoadCondition);
यह माना जाता है कि 30 सेकंड के बाद इस विधि एक TimeoutException फेंक देंगे, लेकिन ऐसा नहीं है, कभी-कभी हमेशा लटकी हुई है। (Runnable java.net.SocketInputStream.socketRead0 (मूल निवासी विधि) java.net.SocketInputStream.read पर पर अज्ञात स्रोत:
java.lang.Thread.State: यह स्टैकट्रेस इन स्थितियों में उत्पादित है) org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer (AbstractSessionInputBuffer.java:160) org.apache.http.impl.io.SocketInputBuffer.fillBuffer (SocketInputBuffer.java:84 पर) में संगठन पर .apache.http.impl.io.AbstractSessionInputBuffer.readLine (AbstractSessionInputBuffer.java7373) org.apache.http पर .impl.conn.LoggingSessionInputBuffer.readLine (LoggingSessionInputBuffer.java:116) org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead (DefaultHttpResponseParser.java:140) पर org.apache.http.impl.conn पर .DefaultHttpResponseParser.parseHead (DefaultHttpResponseParser.java:57) org.apache.http.impl.io.AbstractMessageParser.parse (AbstractMessageParser.java:260) पर org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader पर (AbstractHttpClientConnection .java: 283) org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader (DefaultClientConnection.java:251) org.apache.htt पर p.impl.conn.AbstractClientConnAdapter.receiveResponseHeader (AbstractClientConnAdapter.java:223) org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse (HttpRequestExecutor.java:271) org.apache.http.protocol.HttpRequestExecutor पर पर। निष्पादित (HttpRequestExecutor.java:123) org.apache.http.impl.client.DefaultRequestDirector.tryExecute (DefaultRequestDirector.java:682) org.apache.http.impl.client.DefaultRequestDirector.execute पर (DefaultRequestDirector पर। जावा: 486) org.apache.http.impl.client.AbstractHttpClient.doExecute (AbstractHttpClient.java:863) org.apache.http.impl.client.CloseableHttpClient .execute (CloseableHttpClient.java:72) org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:57) पर org.openqa.selenium.remote.HttpCommandExecutor.fallBackExecute पर (HttpCommandExecutor.java : 322) org.openqa.selenium.remote.HttpCommandExecutor.execute (HttpCommandExecutor.java:301) पर org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute (NewProfileExtensionConnection.java:165 पर) पर org.openqa.selenium.firefox.FirefoxDriver $ LazyCommandExecutor.execute (FirefoxDriver.java:362) org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:5268) org.openqa.selenium.remote.RemoteWebDriver.executeScript (RemoteWebDriver.java:504) es.tao.commonservices.selenium.tests पर।TAORobotWebDriver org.openqa.selenium.support.ui.FluentWait पर es.tao.commonservices.selenium.tests.TAORobotWebDriver $ 1.Apply (TAORobotWebDriver.java:1) पर $ 1.Apply (TAORobotWebDriver.java:6227) । (FluentWait.java:208) es.tao.commonservices.selenium.tests.TAORobotWebDriver.waitToLoad (TAORobotWebDriver.java:6230) es.tao.commonservices.selenium.tests.TAORobotWebDriver.handleWaitToLoad पर पर (TAORobotWebDriver जब तक। जावा: 6110)
मैं फ़ायरफ़ॉक्स प्रोफ़ाइल के लिए यह वरीयता निर्धारित की है, लेकिन यह अभी भी काम नहीं कर रहा:
ffProfile = new FirefoxProfile();
ffProfile.setPreference("webdriver.load.strategy", "unstable");
इसके अलावा इस गुण सेट है:
webDriver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
webDriver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
क्या आप एक ऐसे समाधान के लिए खुले रहेंगे जो सामान्य ड्राइवर.get (url) का उपयोग करता है लेकिन फिर एक अपेक्षित तत्व लोड होने तक फ्लूएंटवाइट का उपयोग करता है? – gorbysbm
हाय gorbysbm, मैं एक प्रकार का रोबोट विकसित कर रहा हूं जो एप्लिकेशन का परीक्षण करता है। कभी-कभी मेरे पास प्रतीक्षा करने के लिए "तत्व" तत्व नहीं होता है, इसलिए मुझे दस्तावेज़ तैयार होने तक प्रतीक्षा करना होगा। वैसे भी, इस त्रुटि को प्रकट करने के लिए तत्व की प्रतीक्षा होगी क्योंकि मैंने कोशिश की है। धन्यवाद! – vbail
बस एक सिद्धांत है, लेकिन FluentWait का उपयोग पृष्ठ के "बॉडी" तत्व को लोड करने के लिए एक ही चीज़ को पूरा करने के लिए नहीं करेगा? मुझे आपके कोड में धाराप्रवाह दिखाई नहीं देता है, यह इस तरह दिखना चाहिए: http://stackoverflow.com/questions/12041013/selenium-webdriver-fluent-wait-works-as-expected-but-implicit-wait-does-not । आप उस जावास्क्रिप्ट कोड से छुटकारा पाने का प्रयास क्यों नहीं करते हैं और देखें कि क्या फ्लेंटवेट – gorbysbm