В настоящее время я тестирую все элементы на своем веб-сайте. Типичный поток:
Моя установка использует операторы switch, чтобы выбрать правильный browser.driver.findElement для поиска нужного элемента.
Пример кода:
switch (element_name) {
case "red button":
return browser.driver.findElement(By.id('redButton'));
break;
Это возвращаемое значение затем используется с click() для щелчка по элементу .....
Моя проблема в том, что кажется, что элементы не могут быть последовательно найдены после загрузки веб-страницы. Я буду непоследовательно получать ошибки, в которых ссылка не может найти элемент или элемент не виден. Поэтому я ищу способ постоянно проверять, загружен ли элемент, а затем пытаться щелкнуть по нему. Я видел примеры с использованием EC.visibilityOf(), но похоже, что я не могу использовать с ним browser.driver.findElement.
Я провел много исследований и тестирования различных решений, но, похоже, ничего не помогло. Любая помощь или руководство будут оценены.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать явное ожидание, пока не найдете элемент на странице, прежде чем щелкнуть. Вот пример кода для этого.
WebDriverWait wait= new WebDriverWait(Driver,<time in MS>);
wait.until(elementToBeClickableAt(By.xpath("<xpath of your element>")));
element.click();
наряду с приведенной выше логикой вы также можете использовать wait.until (elementIsVisible (By.Id ("red-button")));
элемент может щелкать только тогда, когда элемент виден, поэтому он должен работать. В качестве альтернативы вы можете попробовать ExpectedConditions.visibilityOfElementLocated (By. <your xPath>).
Вы можете попробовать это ...
new WebDriverWait(driver,2000).until(ExpectedConditions.visibilityOfElementLocated(By.id('redButton')));
var el = element(by.id('redButton'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(el), 30000).then(function(){
return;
});
более конкретно, я хочу подождать, пока он не станет видимым, я использую эти операторы переключения с getText (). Таким образом, щелчок на самом деле не является основной проблемой, это лицо, которое ищет элемент и не может его найти.