проверить состояние асинхронных потоков в Java

Я не уверен, что это возможно с помощью одного css-локатора, но вы можете получить текст из div, а затем получить текст из дочерних узлов div и вычесть их. Что-то вроде этого (код не был проверен):

String temp = "";
List<WebElement> tempElements = driver.findElements(By.cssSelector("div[id='recipient_div_3'] *"));
for (WebElement tempElement : tempElements) {
    temp =+ " " + tempElement.getText();
}
String element = driver.findElement(By.cssSelector("div[id='recipient_div_3']")).getText().replaceAll("\n", " ").replace(temp, "");

Это относится к случаю, когда вы пытаетесь избежать использования xpath. Xpath позволяет это сделать:

//div[@id='recipient_div_3']/text()
0
задан arun 27 February 2019 в 15:19
поделиться

1 ответ

Если я пойму, что вы пытаетесь отправить некоторый код для асинхронного запуска, тогда я смогу дождаться его завершения (успешно или неудачно). Если это так, вы должны взглянуть на Фьючерсы .

Вот пример, основанный на Javadoc:

FutureTask<String> future =
   new FutureTask<String>(new Callable<String>() {
     public String call() {
       // do stuff
       return "result";
   }});

Этот код создает объект «будущее», который может быть вызван для выполнения searcher.search (target). На данный момент код не выполняется вообще. У вас просто есть объект, представляющий вычисления, которые могут выполняться асинхронно. Для этого вы должны позвонить:

 ExecutorService executor = Executors.newFixedThreadPool(5);
 executor.execute(future);

Этот фрагмент создал Executor (который является фиксированным пулом из 5 потоков), а затем передал ему будущее для выполнения. Исполнитель выполнит вычисления из Future асинхронно.

Future предлагает несколько методов (см. Javadoc) для ожидания завершения, отмены, проверки состояния завершения и т. Д. Например,

 String result = future.get();

будет блокировать, ожидая результата в течение неопределенного времени. Функция get (10, TimeUnit.SECONDS) будет ждать 10 секунд, а если будущее не завершено, бросить.

0
ответ дан Galo Navarro 27 February 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: