Как определить, отображается ли элемент на экране в течение определенного времени, используя selenium java/python?

#java #python-3.x #selenium-webdriver #automation

#Ява #python-3.x #селен-веб-драйвер #автоматизация

Вопрос:

Существует веб-элемент(сообщение об успехе или сбое), который отображается на экране только в течение 3 секунд. Как я могу гарантировать, что элемент отображается на экране в течение 3 секунд с помощью selenium java ИЛИ python?

Ответ №1:

Вы можете использовать java.time.LocalDateTime и java.time.temporal.ChronoUnit комбинировать с org.openqa.selenium.support.ui.ExpectedConditions .

В этом примере измеряется время, в течение которого кнопка не включена:

 package selenium;  import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.concurrent.TimeUnit;  import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait;  public class DeviTimeTest {   public static String userDir = System.getProperty("user.dir");  public static String chromedriverPath = userDir   "\resources\chromedriver.exe";   public static WebDriver driver;    public static void main(String[] args) {  WebDriver driver = startChromeDriver();  driver.get("https://demoqa.com/dynamic-properties");  LocalDateTime start = LocalDateTime.now();  WebElement button = driver.findElement(By.id("enableAfter"));  new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(button));  LocalDateTime finish = LocalDateTime.now();  System.out.println("Button was disabled for "   ChronoUnit.MILLIS.between(start, finish)   " ms.");  driver.quit();  }   public static WebDriver startChromeDriver() {  System.setProperty("webdriver.chrome.driver", chromedriverPath);  ChromeOptions options = new ChromeOptions();  options.addArguments("--ignore-certificate-errors");  options.addArguments("--start-maximized");  options.addArguments("--disable-notifications");  driver = new ChromeDriver(options);  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  return driver;  } }  

Выход:

 Starting ChromeDriver 96.0.4664.45 (76e4c1bb2ab4671b8beba3444e61c0f17584b2fc-refs/branch-heads/4664@{#947}) on port 47769 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. Pro 06, 2021 8:00:55 DOP. org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: W3C Button was disabled for 4404 ms.