Как подождать, пока не будет тег span с атрибутом ready_to_send или другими словами span tag, имеющий отправленный атрибут

ArrayIndexOutOfBoundsException означает, что вы пытаетесь получить доступ к индексу массива, который не существует или не связан с границей этого массива. Индексы массива начинаются с 0 и заканчиваются на длину - 1.

В вашем случае

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n'); // i goes from 0 to length, Not correct
}

ArrayIndexOutOfBoundsException происходит, когда вы пытаетесь получить доступ к элементу index.length, который делает не существует (индекс массива заканчивается на -1). просто заменяя & lt; = с & lt; решит эту проблему.

for(int i = 0; i < name.length; i++) {
    System.out.print(name[i] +'\n');  // i goes from 0 to length - 1, Correct
}
2
задан Andrei Suvorkov 13 July 2018 в 14:23
поделиться

2 ответа

Вы можете использовать это:

new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfElementsToBeLessThan(By.xpath("//div[@class='message_bubble']/span[@data-icon='ready_to_send']"), 1));

, это будет ждать, пока не будут найдены элементы под следующим xpath.

Примечание: вам нужно добавить некоторые импорты:

import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

в вашем коде было бы так:

private Boolean GetStatus()
{
    try {
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.numberOfElementsToBeLessThan(By.xpath("//div[@class='message_bubble']/span[@data-icon='ready_to_send']"), 1));
        return true;
    }catch (Exception e){
        return false;
    }
}
1
ответ дан Andrei Suvorkov 17 August 2018 в 12:58
поделиться
  • 1
    Да, это очень помогло. Принимая как ответ с повышением. – Rushikant Pawar 13 July 2018 в 14:19

Чтобы вызвать официант , пока нет тега <span> с атрибутом ready_to_send, вы можете вызвать WebDriverwait с помощью не в Ожидаемые условия вместе с методом presenceOfAllElementsLocatedBy () , и вы можете использовать следующее решение:

Boolean bool1 = new WebDriverWait(driver, 20).until(ExpectedConditions.not(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//div[@class='message_bubble']/span[@data-icon='ready_to_send']"))));

Кроме того, вы также может использовать WebDriverwait с предложением [Ожидаемые условия] invisibilityOfAllElements () , и вы можете использовать следующее решение:

Boolean bool2 = new WebDriverWait(driver, 20).until(ExpectedConditions.invisibilityOfAllElements(driver.findElements(By.xpath("//div[@class='message_bubble']/span[@data-icon='ready_to_send']"))));
2
ответ дан DebanjanB 17 August 2018 в 12:58
поделиться
  • 1
    Это тоже помогло. Вы также можете заработать свое драгоценное время, прочитать и поддержать. Спасибо. – Rushikant Pawar 13 July 2018 в 14:21
Другие вопросы по тегам:

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