Ниже код:findElements() возвращает NoSuchElementException вместо возвращения пустого списка
List<WebElement> listOfAllMatchingElements = driver.findElements(By.xpath(".//*[@id='e1MMenuRoot']/div/div[last()]"))
ИЛИ
List<WebElement> listOfAllMatchingElements = driver.findElements(By.xpath(".//*[@id='e1MMenuRoot']/div/div[5]"))
Теперь, как в моем понимании, это должно возвращать список веб-элементов или пустой список [ Учитывая, что xpath синтаксически корректен].
Вместо этого исключение [NoSuchElementException] вызывается с запутанным сообщением как «возвращенная непредвиденная ошибка». После является исключением,
org.openqa.selenium.NoSuchElementException: Finding elements with xpath == .//*[@id='e1MMenuRoot']/div/div[5]returned an unexpected error (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.37 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.46.0', revision: '87c69e2', time: '2015-06-04 16:17:10'
System info: host: 'OTINWISRCDT050', ip: '172.24.187.38', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_71'
*** Element info: {Using=xpath, value=.//*[@id='e1MMenuRoot']/div/div[5]}
Session ID: a45d6015-f529-4e85-924e-3214076d59e8
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=9, ie.usePerProcessProxy=false, ignoreProtectedModeSettings=true, cssSelectorsEnabled=true, requireWindowFocus=false, initialBrowserUrl=http://localhost:31736/, handlesAlerts=true, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
Код, используемый для элемента ожидания, как,
public boolean customElementWaitWithTimeoutWithProperties(WebDriver UtilDriver,By locatorWithLocation,int Timeout)
{
WebDriver driver = UtilDriver;
boolean elementFound=false;
int i=1;
try
{
while(i<=Timeout)
{
if(((Boolean.compare(elementFound,false)))==0)
{
List<WebElement> listOfAllMatchingElements = driver.findElements(locatorWithLocation);
if(!(listOfAllMatchingElements.isEmpty()) && (((Boolean.compare(elementFound,false)))==0))
{
if(listOfAllMatchingElements.size()>1)
{
log.info("Common Methods :customElementWaitWithTimeout: More than one element is found for given location, check the location !!");
elementFound=false;
break;
}
else if(listOfAllMatchingElements.size()==1 && (((Boolean.compare(elementFound,false)))==0))
{
log.info("Common Methods :customElementWaitWithTimeout: Element found on "+i+" attempt !!");
elementFound=true;
break;
}
}
else if ((listOfAllMatchingElements.isEmpty()))
{
log.info("Common Methods :customElementWaitWithTimeout: Element is not found on "+i+" attempt!!");
}
Thread.sleep(1200);
}
i=i+1;
}
}
catch(Exception elementFoundCheck)
{
log.error("Common Methods[customElementWaitWithTimeout]: Exception caught !!");
elementFoundCheck.printStackTrace();
}
return elementFound;
}
[Дополнительная информация] Однако
, когда я поставил жесткий ждать в течение определенного времени [Для убедитесь, что элемент загружен] & написать письмо как
driver.findElement(By.xpath(".//*[@id='e1MMenuRoot']/div/div[5]")).click();
Элемент получает щелчок.
Любая причина/решение проблемы ?? [findElements() возвращение NoSuchElementException]
Отсутствующие 'By' класс – Saifur
Почему вы пишете пользовательских wait.When есть Явное ожидание уже реализовано в Selenium – Madhan
Есть прочитать это: https://stackoverflow.com/help/mcve Как ваш вопрос стоит, он будет закрыт, так как «не может воспроизвести». – SiKing