আমি কীভাবে সেলেনিয়াম-ওয়েবড্রাইভারকে জাভাতে কয়েক সেকেন্ড অপেক্ষা করতে বলতে পারি?


101

আমি একটি জাভা সেলেনিয়াম-ওয়েবড্রাইভার নিয়ে কাজ করছি। আমি আরো বললাম

driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

এবং

WebElement textbox = driver.findElement(By.id("textbox"));

কারণ আমার অ্যাপ্লিকেশনগুলি ইউজার ইন্টারফেস লোড করতে কয়েক সেকেন্ড সময় নেয়। সুতরাং আমি 2 সেকেন্ড অন্তর্নিহিত সেট। তবে আমি উপাদান পাঠ্যবক্সটি সনাক্ত করতে অক্ষম হয়েছি

তারপরে আমি যুক্ত করি Thread.sleep(2000);

এখন এটা ঠিক কাজ করে। কোনটি একটি ভাল উপায়?


উত্তর:


123

ভাল, অপেক্ষা দুটি ধরণের আছে: সুস্পষ্ট এবং অন্তর্নিহিত অপেক্ষা। সুস্পষ্ট অপেক্ষার ধারণাটি

WebDriverWait.until(condition-that-finds-the-element);

অন্তর্নিহিত অপেক্ষার ধারণাটি হ'ল

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

আপনি বিশদ এখানে পার্থক্য পেতে পারেন ।

এ জাতীয় পরিস্থিতিতে আমি সুস্পষ্ট অপেক্ষা ( fluentWaitবিশেষত) ব্যবহার পছন্দ করি :

public WebElement fluentWait(final By locator) {
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }
    });

    return  foo;
};

fluentWaitফাংশনটি আপনার পাওয়া ওয়েব উপাদানকে ফেরত দেয়। উপরের ডকুমেন্টেশন থেকে fluentWait: ওয়েট ইন্টারফেসের একটি বাস্তবায়ন যা ফ্লাইতে তার সময়সীমা এবং ভোটদানের ব্যবধানটি কনফিগার করা থাকতে পারে। প্রতিটি ফ্লুওয়েট ইনস্ট্যান্স শর্তের জন্য অপেক্ষা করতে সর্বাধিক পরিমাণ এবং সেই সাথে ফ্রিকোয়েন্সিটি শর্তটি পরীক্ষা করার জন্য সংজ্ঞা দেয়। তদ্ব্যতীত, পৃষ্ঠায় কোনও উপাদান অনুসন্ধান করার সময় ব্যবহারকারী অপেক্ষা না করে নির্দিষ্ট ধরণের ব্যতিক্রম উপেক্ষা করার জন্য অপেক্ষাটি কনফিগার করতে পারে। বিশদ আপনি এখানে পেতে পারেন

fluentWaitআপনার ক্ষেত্রে ব্যবহার নিম্নলিখিত হতে পারে:

WebElement textbox = fluentWait(By.id("textbox"));

এই পদ্ধতির আইএমএইচও আরও ভাল হিসাবে আপনি ঠিক কতটা অপেক্ষা করতে হবে তা জানেন না এবং ভোটদানের ব্যবধানে আপনি নির্বিচার সময়সীমা নির্ধারণ করতে পারেন কোন উপাদান উপস্থিতি যাচাই করা হবে। শ্রদ্ধা।


4
এটি import com.google.common.base.Function;, তা নয়import java.util.function.Function;
05-

উন্নততার জন্য ইন্টিলিজ আইডিইএ ব্যবহার করে হেন্থ চেক করা হয়েছে, এটি অটো-আমদানিতে সহায়তা করছে (
মাভেন

4
আমি কেবল এটিই অন্যদের জন্য কল করছি যাঁরা ভাবছেন যা Functionব্যবহার করা হচ্ছে। এটা প্রথমে আমার কাছে স্পষ্ট ছিল না। উত্তর করার জন্য ধন্যবাদ.
haventchecked

4
অথবা আপনি শুধু একটি ল্যামডা অভিব্যক্তি ব্যবহার করতে পারে: driver -> driver.findElement(locator)। এটি ব্যবহার করার সময় আপনার কোনও আমদানির বিবৃতি প্রয়োজন হবে না।
থিবস্টারস

4
এখন এটি: .withTimeout(Duration.ofSeconds(30)).pollingEvery(Duration.ofSeconds(5))এর .withTimeout(30, TimeUnit.SECONDS).pollingEvery(5, TimeUnit.SECONDS)
স্থলে

16

এই থ্রেডটি কিছুটা পুরানো, তবে ভেবেছিলাম আমি বর্তমানে যা করছি তা পোস্ট করব (কাজ চলছে)।

যদিও আমি এখনও পরিস্থিতিগুলিতে আঘাত করছি যেখানে সিস্টেমটি ভারী বোঝার মধ্যে রয়েছে এবং আমি যখন একটি জমা দেওয়ার বোতামে ক্লিক করি (যেমন, login.jsp), তখন তিনটি শর্ত (নীচে দেখুন) ফিরে আসবে trueতবে পরের পৃষ্ঠা (যেমন, হোম.জেএসপি) হ্যান ' টি এখনও লোড করা শুরু করে।

এটি একটি জেনেরিক অপেক্ষার পদ্ধতি যা প্রত্যাশিত শর্তগুলির একটি তালিকা গ্রহণ করে।

public boolean waitForPageLoad(int waitTimeInSec, ExpectedCondition<Boolean>... conditions) {
    boolean isLoaded = false;
    Wait<WebDriver> wait = new FluentWait<>(driver)
            .withTimeout(waitTimeInSec, TimeUnit.SECONDS)
            .ignoring(StaleElementReferenceException.class)
            .pollingEvery(2, TimeUnit.SECONDS);
    for (ExpectedCondition<Boolean> condition : conditions) {
        isLoaded = wait.until(condition);
        if (isLoaded == false) {
            //Stop checking on first condition returning false.
            break;
        }
    }
    return isLoaded;
}

আমি বিভিন্ন পুনরায় ব্যবহারযোগ্য প্রত্যাশিত শর্তগুলি সংজ্ঞায়িত করেছি (তিনটি নীচে রয়েছে)। এই উদাহরণে, তিনটি প্রত্যাশিত শর্তের মধ্যে ডকুমেন্ট রয়েছে readyডিয়ারস্টেট = 'সম্পূর্ণ', কোনও "ওয়েট_ডায়ালগ" উপস্থিত নেই, এবং কোনও 'স্পিনার' নেই (উপাদানগুলিকে অ্যাসিঙ্ক ডেটা নির্দেশ করার অনুরোধ করা হচ্ছে)।

সমস্ত ওয়েব পৃষ্ঠাগুলিতে কেবল প্রথমটি সাধারণভাবে প্রয়োগ করা যেতে পারে।

/**
 * Returns 'true' if the value of the 'window.document.readyState' via
 * JavaScript is 'complete'
 */
public static final ExpectedCondition<Boolean> EXPECT_DOC_READY_STATE = new ExpectedCondition<Boolean>() {
    @Override
    public Boolean apply(WebDriver driver) {
        String script = "if (typeof window != 'undefined' && window.document) { return window.document.readyState; } else { return 'notready'; }";
        Boolean result;
        try {
            result = ((JavascriptExecutor) driver).executeScript(script).equals("complete");
        } catch (Exception ex) {
            result = Boolean.FALSE;
        }
        return result;
    }
};
/**
 * Returns 'true' if there is no 'wait_dialog' element present on the page.
 */
public static final ExpectedCondition<Boolean> EXPECT_NOT_WAITING = new ExpectedCondition<Boolean>() {
    @Override
    public Boolean apply(WebDriver driver) {
        Boolean loaded = true;
        try {
            WebElement wait = driver.findElement(By.id("F"));
            if (wait.isDisplayed()) {
                loaded = false;
            }
        } catch (StaleElementReferenceException serex) {
            loaded = false;
        } catch (NoSuchElementException nseex) {
            loaded = true;
        } catch (Exception ex) {
            loaded = false;
            System.out.println("EXPECTED_NOT_WAITING: UNEXPECTED EXCEPTION: " + ex.getMessage());
        }
        return loaded;
    }
};
/**
 * Returns true if there are no elements with the 'spinner' class name.
 */
public static final ExpectedCondition<Boolean> EXPECT_NO_SPINNERS = new ExpectedCondition<Boolean>() {
    @Override
    public Boolean apply(WebDriver driver) {
        Boolean loaded = true;
        try {
        List<WebElement> spinners = driver.findElements(By.className("spinner"));
        for (WebElement spinner : spinners) {
            if (spinner.isDisplayed()) {
                loaded = false;
                break;
            }
        }
        }catch (Exception ex) {
            loaded = false;
        }
        return loaded;
    }
};

পৃষ্ঠার উপর নির্ভর করে, আমি তাদের একটি বা সমস্ত ব্যবহার করতে পারি:

waitForPageLoad(timeoutInSec,
            EXPECT_DOC_READY_STATE,
            EXPECT_NOT_WAITING,
            EXPECT_NO_SPINNERS
    );

নিম্নলিখিত শ্রেণিতে পূর্বনির্ধারিত প্রত্যাশিত শর্তাদিও রয়েছে : org.openqa.selenium.support.ui.EPreCCitions


4
দুর্দান্ত উত্তর! আমি কখনই কাউকে মেথড কনস্ট্রাক্টরের মাধ্যমে কোনও এক্সপেক্টেড কনডিশন আইটেম পাস করতে দেখিনি। কি একটি মহান ধারণা. +1
জাঙ্গোফান

জেফ ভিনসেন্ট, আপনি কি দয়া করে আমাকে বলতে পারেন যে এই পৃষ্ঠার জন্য 5 মিনিট অপেক্ষা করতে হবে যদি হ্যাঁ তবে দয়া করে প্রস্তাব করুন কোন স্থানের প্যারামিটারটি প্রেরণ করা দরকার?
খানম

এটি একটি দুর্দান্ত উত্তর। আমার মতো এই জাতীয় ফাংশন রয়েছে তবে যাইহোক, আমাকে এটি প্রতিটি ফাংশনে কল করতে হবে যাতে আমার স্ক্রিপ্ট পৃষ্ঠা লোড (স্পিনার) না হওয়া পর্যন্ত অপেক্ষা করে। আমি কি এই উপায়টির জন্য এই ওয়েটারফরস্পিনারটি নিঃশব্দে ইমপ্লিপওয়েটে ফেলাতে পারি যাতে আমার ফাংশনে প্রতিবার এটি কল করার প্রয়োজন নেই? ফাংশনটি সংজ্ঞায়িত করার মতো, এটি একবার চালকের কাছে সংযুক্ত করুন এবং বুম করুন।
ভুবনেশ মণি

13

যদি ওয়েবড্রাইভারজে (নোড.জেএস) ব্যবহার করে থাকেন,

driver.findElement(webdriver.By.name('btnCalculate')).click().then(function() {
    driver.sleep(5000);
});

উপরের কোডটি ব্রাউজারটি বোতামটি ক্লিক করার পরে 5 সেকেন্ড অপেক্ষা করে।


18
প্রশ্নটি জাভা সম্পর্কে বিশেষভাবে নোড / জাভাস্ক্রিপ্টের নয় কেন আপনি কেন এটি পোস্ট করবেন? এটি রুবিতে কীভাবে করা যায় তার উত্তর দেওয়ার মতো বিষয় topic
Thor84no

4
ঘুম ব্যবহারের সুপারিশ অবশ্যই কোনও ভাল সমাধান নয়
কিরিল এস

4
@ থোর 84no মূলত যেহেতু আমাদের মধ্যে কারও কারও ওয়েব সমাধানটি অনুসন্ধান করা এই উত্তরটি খুঁজে পান
কিতঙ্গা এনডে ২

10

ব্যবহার Thread.sleep(2000);করা নিঃশর্ত অপেক্ষা is যদি আপনার পরীক্ষাটি দ্রুত লোড হয় তবে আপনাকে এখনও অপেক্ষা করতে হবে। সুতরাং নীতিগতভাবে ব্যবহার implicitlyWaitকরা ভাল সমাধান।

তবে, আমি দেখতে পাচ্ছি না কেন implicitlyWaitআপনার ক্ষেত্রে কাজ করে না। findElementব্যতিক্রম ছুঁড়ে ফেলার আগে যদি বাস্তবে দুই সেকেন্ড সময় লাগে তবে আপনি কি পরিমাপ করেছেন ? যদি তা হয় তবে এই উত্তরটিতে বর্ণিত হিসাবে আপনি কি ওয়েবড্রাইভারের শর্তসাপেক্ষ অপেক্ষা করতে চেষ্টা করতে পারেন ?


3

আমি কাস্টম শর্ত ব্যবহার করতে চাই। পাইথনে এখানে কিছু কোড রয়েছে:

def conditions(driver):
    flag = True
    ticker = driver.find_elements_by_id("textbox")
    if not ticker:
        flag = False
    return flag

... click something to load ...
self.wait = WebDriverWait(driver, timeout)
self.wait.until(conditions)

যখনই আপনার অপেক্ষা করতে হবে, আপনি নির্দিষ্ট উপাদানের উপস্থিতি পরীক্ষা করে এটি স্পষ্টভাবে করতে পারেন (এ জাতীয় উপাদান পৃষ্ঠা থেকে অন্য পৃষ্ঠায় পরিবর্তিত হতে পারে)। find_elements_by_idরিটার্নের তালিকা - খালি বা না, আপনার কেবল পরীক্ষা করতে হবে।


2

ক্লিক করা অবরুদ্ধ বলে মনে হচ্ছে? - আপনি ওয়েবড্রাইভার জেএস ব্যবহার করছেন কিনা তা অপেক্ষা করার আরও একটি উপায় এখানে রয়েছে:

driver.findElement(webdriver.By.name('mybutton')).click().then(function(){
  driver.getPageSource().then(function(source) {
    console.log(source);
  });
});

উপরের কোডটি পরবর্তী পৃষ্ঠার লোড হওয়ার জন্য বোতামটি ক্লিক করার পরে অপেক্ষা করে এবং তারপরে পরবর্তী পৃষ্ঠার উত্সটি ধরবে।


4
কোডটি পরবর্তী পৃষ্ঠার লোড হওয়ার জন্য অপেক্ষা করে? কলব্যাকের প্রথম কলটিই কি পেটসোর্স?
বিচ্ছিন্ন

1

সুস্পষ্টভাবে অপেক্ষা করুন এবং থ্রেড.স্লিপ দু'টিই কেবল সিঙ্ক্রোনাইজেশনের জন্য ব্যবহৃত হয়..কিন্তু পার্থক্যটি হ'ল আমরা পুরো প্রোগ্রামটির জন্য সুস্পষ্টভাবে অপেক্ষা করতে পারি তবে থ্রেড.স্লিপ কেবলমাত্র সেই একক কোডের জন্য কাজ করবে..এখন আমার পরামর্শটি ব্যবহার করা হয়েছে প্রোগ্রামটিতে একবার স্পষ্টভাবে অপেক্ষা করুন প্রতিবার যখন আপনার ওয়েবপেজটি রিফ্রেশ হবে তখন থ্রেড ব্যবহার করুন that সেই সময় ঘুমান..এটি আরও ভাল হবে :)

আমার কোডটি এখানে:

package beckyOwnProjects;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;

public class Flip {

    public static void main(String[] args) throws InterruptedException {
        WebDriver driver=new FirefoxDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
        driver.get("https://www.flipkart.com");
    WebElement ele=driver.findElement(By.cssSelector(".menu-text.fk-inline-block"));
    Actions act=new Actions(driver);
    Thread.sleep(5000);
    act.moveToElement(ele).perform();
    }

}

0

কখনও কখনও অন্তর্নিহিত অপেক্ষাকে ওভাররাইড হয়ে যায় বলে মনে হয় এবং অপেক্ষা করার সময়টি খুব কম করা হয়। [@ ইউজিন.পলশিকভ] হায়রে ভাল ডকুমেন্টেশন আছে। আমি আমার টেস্টিং এবং সেলেনিয়াম 2 এর কোডিংয়ে পেয়েছি যে অন্তর্নিহিত অপেক্ষাগুলি ভাল তবে মাঝে মাঝে আপনাকে স্পষ্টভাবে অপেক্ষা করতে হবে।

ঘুমানোর জন্য সরাসরি কোনও সুতোর আহ্বান এড়ানো ভাল, তবে কখনও কখনও এটির চারপাশে ভাল উপায় থাকে না। যাইহোক, অন্যান্য সেলেনিয়াম প্রদত্ত অপেক্ষা অপশন রয়েছে যা সহায়তা করে। ওয়েটফরপেজটেলোড এবং ওয়েটফরমেটওলড বিশেষভাবে কার্যকর প্রমাণিত হয়েছে।


0

অন্তর্নিহিত অপেক্ষা: ইমপ্লিট ওয়েটের সময় যদি ওয়েব ড্রাইভারটি তার উপলব্ধতার কারণে এটি তাত্ক্ষণিকভাবে খুঁজে না পায় তবে ওয়েবড্রাইভার উল্লিখিত সময়ের জন্য অপেক্ষা করবে এবং নির্দিষ্ট সময়ের মধ্যে এটি আবার উপাদান খুঁজে পাওয়ার চেষ্টা করবে না will নির্দিষ্ট সময় শেষ হয়ে গেলে এটি ব্যতিক্রম ছোঁড়ার আগে শেষবারের মতো আবার উপাদানটি অনুসন্ধান করার চেষ্টা করবে। ডিফল্ট সেটিংস শূন্য। একবার আমরা একটি সময় সেট করে নিই, ওয়েব ড্রাইভার ওয়েবড্রাইভার অবজেক্ট দৃষ্টান্তের সময়ের জন্য অপেক্ষা করে।

সুস্পষ্ট অপেক্ষা: এমন উদাহরণ থাকতে পারে যখন কোনও নির্দিষ্ট উপাদান লোড হতে এক মিনিটেরও বেশি সময় নেয়। সেক্ষেত্রে আপনি স্পষ্টভাবে অপেক্ষা করার জন্য একটি বিশাল সময় নির্ধারণ করতে পছন্দ করবেন না, যেমন আপনি এটি করেন তবে আপনার ব্রাউজারটি প্রতিটি উপাদানগুলির জন্য একই সময়ের জন্য অপেক্ষা করতে চলেছে। এই পরিস্থিতি এড়াতে আপনি কেবল প্রয়োজনীয় উপাদানের উপর পৃথক সময় রাখতে পারেন। এটি অনুসরণ করে আপনার ব্রাউজারের অন্তর্নিহিত অপেক্ষার সময়টি প্রতিটি উপাদানগুলির জন্য কম হবে এবং এটি নির্দিষ্ট উপাদানগুলির জন্য বড়।


0

কখনও কখনও অন্তর্নিহিত অপেক্ষার ব্যর্থ হয়, বলে যে একটি উপাদান বিদ্যমান কিন্তু এটি সত্যিই না।

সমাধানটি হ'ল ড্রাইভার.ফাইন্ড এলিমেন্ট ব্যবহার এড়ানো এবং এটি একটি স্বনির্ধারিত অপেক্ষাকে স্পষ্টভাবে অপেক্ষা করে এমন একটি কাস্টম পদ্ধতিতে প্রতিস্থাপন করা। উদাহরণ স্বরূপ:

import org.openqa.selenium.NoSuchElementException;


public WebElement element(By locator){
    Integer timeoutLimitSeconds = 20;
    WebDriverWait wait = new WebDriverWait(driver, timeoutLimitSeconds);
    try {
        wait.until(ExpectedConditions.presenceOfElementLocated(locator));
    }
    catch(TimeoutException e){
        throw new NoSuchElementException(locator.toString());
    }
    WebElement element = driver.findElement(locator);
    return element;
}

বিক্ষিপ্ত, মাঝে মাঝে ব্যর্থতা (এই লিঙ্কটি দেখুন ) ব্যতীত নিখুঁত অপেক্ষা এড়ানোর অতিরিক্ত কারণ রয়েছে ।

আপনি এই "এলিমেন্ট" পদ্ধতিটি ড্রাইভার.ফাইন্ড এলিমেন্টের মতোই ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

    driver.get("http://yoursite.html");
    element(By.cssSelector("h1.logo")).click();

আপনি যদি সমস্যা সমাধানের জন্য বা অন্য কোনও বিরল উপলক্ষে সত্যিই কেবল কয়েক সেকেন্ড অপেক্ষা করতে চান, আপনি সেলেনিয়াম আইডিইয়ের প্রস্তাব মতো একটি বিরতি পদ্ধতি তৈরি করতে পারেন:

    public void pause(Integer milliseconds){
    try {
        TimeUnit.MILLISECONDS.sleep(milliseconds);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

0

উত্তর : সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে উপাদানটির দৃশ্যমানতার আগে কয়েক সেকেন্ড অপেক্ষা করুন below

ইনপিসিটিলি ওয়েইট () : ওয়েবড্রাইভার উদাহরণটি পুরো পৃষ্ঠা লোড হওয়া পর্যন্ত অপেক্ষা করে। পূর্ণ পৃষ্ঠা লোড অপেক্ষা করতে আপনি 30 থেকে 60 সেকেন্ড সময় সংগ্রহ করেন muse

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

স্পষ্টতই ওয়েট ওয়েবড্রাইভারওয়েট () : ওয়েবড্রাইভার উদাহরণটি পুরো পৃষ্ঠা লোড হওয়া পর্যন্ত অপেক্ষা করে।

WebDriverWait wait = new WebDriverWait(driver, 60);

wait.until(ExpectedConditions.visibilityOf(textbox));

driver.findElement(By.id("Year")).sendKeys(allKeys);

দ্রষ্টব্য : কোনও নির্দিষ্ট ওয়েবএলমেন্ট পরিচালনা করতে দয়া করে স্পষ্টতই ওয়েট ওয়েবড্রাইভারওয়েট () ব্যবহার করুন।



-1

আমি নিম্নলিখিত কোডটি 2 সেকেন্ড অপেক্ষা করতে পছন্দ করি।

for(int i=0; i<2 && driver.findElements(By.id("textbox")).size()==0 ; i++){
   Thread.sleep(1000);
}

-1
Thread.sleep(1000);

আরও খারাপ: একটি স্থির অপেক্ষা হিসাবে এটি পরীক্ষার স্ক্রিপ্টকে ধীর করে দেবে।

driver.manage().timeouts.implicitlyWait(10,TimeUnit.SECONDS);

এটি একটি গতিশীল অপেক্ষা

  • এটি ওয়েবড্রাইভারের অস্তিত্ব অবধি বৈধ বা ড্রাইভারের জীবনকাল পর্যন্ত এর সুযোগ রয়েছে
  • আমরাও অপেক্ষা করতে পারি

অবশেষে, আমি যা পরামর্শ দিচ্ছি তা হ'ল

WebDriverWait wait = new WebDriverWait(driver,20);
wait.until(ExpectedConditions.<different canned or predefined conditions are there>);

কিছু পূর্বনির্ধারিত শর্ত সহ:

isAlertPresent();
elementToBeSelected();
visibilityOfElementLocated();
visibilityOfAllElementLocatedBy();
frameToBeAvailableAndSwitchToIt();
  • এটিও গতিশীল অপেক্ষা
  • এটিতে অপেক্ষাটি কেবল কয়েক সেকেন্ডের মধ্যেই হবে
  • আমাদের কোনও নির্দিষ্ট ওয়েব উপাদানটির জন্য স্পষ্টভাবে অপেক্ষা করতে হবে যার উপর আমরা ব্যবহার করতে চাই।

-4
Thread.Sleep(5000);

এটি আমাকে সহায়তা করেছিল তবে ইন্টারফ্রেড এক্সসেপশন ব্যতিক্রমের যত্ন নেওয়া দরকার। তাই চেষ্টা এবং ধরা দিয়ে আরও ভাল এটি ঘিরে:

try {
    Thread.Sleep(5000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

বা

ছোঁড়া ঘোষণা যুক্ত করুন:

public class myClass {
    public static void main(String[] args) throws InterruptedException
    { ... }

আমি দ্বিতীয়টিকে পছন্দ করবো যেহেতু একজন তারপরে sleep()যতবার তা ব্যবহার করতে পারে tryএবং catchযতবার sleep()ব্যবহৃত হয়েছে তার পুনরাবৃত্তি এড়াতে এবং প্রতিরোধ করতে পারে block

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.