Перейти к содержимому

Фотография

Могу я использовать интерфейс IJavaScriptExecutor через WebDriverWait

webdriver IJavaScriptExecutor WebDriverWait C# .NET

  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 s3ngeeer

s3ngeeer

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 24 февраля 2017 - 11:23

Доброго времени суток

Суть вопроса в том, что мне необходимо внедрение ЖС кода в моем методе
За счет того, что инициализация IJavaScriptExecutor происходит через IWebDriver, а не WebDriverWait, я не могу найти решение проблемы. Сейчас более наглядно попытаюсь показать, что есть и что хочу, чтобы было

Актуальный результат :

private IWebDriver  webDriver = new ChromeDriver();
IJavaScriptExecutor jse = (IJavaScriptExecutor)webDriver;

Ожидаемый результат: 

private IWebDriver  webDriver = new ChromeDriver();
private WebDriverWait waitDriver = new WebDriverWait(webDriver, TimeSpan.FromSeconds(10));
IJavaScriptExecutor jse = (IJavaScriptExecutor) waitDriver;

Может кто-нибудь подскажет, как мне можно реализовать примерно такую инициализацию jse?

Получается, что по всему проекту использую явные ожидания, а как дело доходит до ЖС кода, то приходится по-дикарски юзать    Thread.Sleep(1000).

Вообще, цель - прокрутить страницу на определенное количество пикселей вниз, чтобы аджаксом подтянулись новые элементы, а после я с ними мог спокойно работать. Фрагмент кода:

            IJavaScriptExecutor jse = (IJavaScriptExecutor)webDriver;
            for (int i = 0; i < 10; i++)
            {
              jse.ExecuteScript("window.scrollTo(0, 10000);");
              Thread.Sleep(1000);
            }

 


  • 0

#2 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 25 февраля 2017 - 03:47

можно ждать пока не станет хорошо ^W не появи(я)тся нужные элемнты

		try {

    wait.until(new ExpectedCondition<WebElement>() {

				@Override
				public WebElement apply(WebDriver d) {
        
         ((JavascriptExecutor) driver).executeScript(script, // SCROLL
				);
					Iterator<WebElement> elementsIterator = d
							.findElements(
									By.cssSelector( // EXPECTED ELEMENT LOCATOR 
                  ))
							.iterator();
              // DO FURTHER FILTERING 
					WebElement result = null;
					while (elementsIterator.hasNext()) {
						WebElement e = (WebElement) elementsIterator.next();
						String t = e.getText();
						if (t.contains( // E.G. BY TEXT
            )) {
							result = e;
							break;
						}
					}
					return result;
				}
			});
		} catch (

		Exception e) {
			System.err.println("Exception: " + e.toString());
		}


на java 8  это можно укоротить со streams


  • 0



Темы с аналогичным тегами webdriver, IJavaScriptExecutor, WebDriverWait, C#, .NET

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных