Не удалось найти элемент с помощью селена, код, разработанный в MVC

прикрепил кодЯ не могу найти элемент с помощью Xpath. Код разработан в рамках MVC, код исходит из частичного представления. пожалуйста, проверьте прикрепленное изображение и помогите

<html class=" js flexbox no-touch backgroundsize boxshadow  
csstransforms" style="">
 <head>
<body>
<header class="header header-waterfall affix-top">
<div class="menu-wrapper pull-left" role="navigation">
<ul class="nav nav1" role="menubar">
<li role="menuitem">
<a href="#">
<span class="icon icon-lg">menu</span>
</a>
<div id="menu_nav" class="mega-menu" role="menu" aria-hidden="true" 
style="">
</li>
</ul>
</div>
<div class="col-lg-3 col-md-3 col-sm-8 col-xs-8 pull-left">
<ul class="nav nav-list pull-right" style="padding: 6px 0px; cursor: 
pointer;">
</header>

Пробовал с ролью span, li и т. д. Но максимальное количество раз я получал ошибку типа, не взаимодействовал.

FAILED: testCheckFarmerData org.openqa.selenium.NoSuchElementException: невозможно найти элемент: {"method":"xpath","selector":"//ul[@class= 'nav nav 1']/li/a/span" } Продолжительность команды или время ожидания: 30,13 секунды.


person Suneel Kuppili    schedule 19.07.2016    source источник
comment
Поделитесь своим кодом селена, который вы пробовали....   -  person Saurabh Gaur    schedule 19.07.2016
comment
и что вы имеете в виду, говоря, что не можете найти элемент??.. есть ли какие-либо исключения?? поделитесь пожалуйста тоже   -  person Saurabh Gaur    schedule 19.07.2016
comment
пожалуйста, найдите прикрепленное изображение для кода селена. Пробовал с промежутком, ролью li и т. Д. Но максимальное количество раз я получал ошибку, например, не взаимодействовал. FAILED: testCheckFarmerData org.openqa.selenium.NoSuchElementException: невозможно найти элемент: {method:xpath,selector://ul[@class= 'nav nav 1']/li/a/span} Продолжительность команды или время ожидания: 30,13 секунды   -  person Suneel Kuppili    schedule 19.07.2016
comment
пробовал всеми средствами и обращался к разработчику, он говорит, что он разработан в MVC framework и верхнее меню вытащено из Partial-view   -  person Suneel Kuppili    schedule 19.07.2016


Ответы (1)


Вы должны попробовать использовать WebDriverWait, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver, 10);
el = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("menu")));
el.click();

Отредактировано1: – Вы можете выполнить click, используя JavascriptExecutor, как показано ниже: –

WebDriverWait wait = new WebDriverWait(driver, 10);
el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("menu")));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el);

Отредактировано2 :-

WebDriverWait wait = new WebDriverWait(driver, 10); 
el = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//ul[@cla‌​ss='nav nav1']/descendant::span[contains(.,'menu')]")));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el);

Надеюсь, поможет..:)

person Saurabh Gaur    schedule 19.07.2016
comment
Замечательно! Он работает наконец. Боролся со 2 дня - person Suneel Kuppili; 19.07.2016
comment
он не работает в FF и в хроме несколько раз. Работает только в IE - person Suneel Kuppili; 19.07.2016
comment
@SuneelKupplii Что вы имеете в виду, что иногда он не работает в FF и в Chrome ?? есть исключение?? - person Saurabh Gaur; 19.07.2016
comment
@SuneelKuppili Если есть timeOut, вам нужно увеличить время с 10 секунд до более .. - person Saurabh Gaur; 19.07.2016
comment
Я снова получаю ту же ошибку, я попытался увеличить время до 100 мс. Это ошибка: FAILED: testCheckFarmerData org.openqa.selenium.ElementNotVisibleException: элемент не виден (информация о сеансе: chrome = 51.0.2704.103) (информация о драйвере: chromedriver = 2.22.397933 (1cab651507b88dec79b2b2a22d1943c018033cc1b), платформа = 1 Windows. x86_64) (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека) Продолжительность команды или время ожидания: 20 миллисекунд - person Suneel Kuppili; 20.07.2016
comment
Это ошибка с драйвером FF: FAILED: testCheckFarmerData org.openqa.selenium.ElementNotVisibleException: элемент в настоящее время не виден и поэтому не может взаимодействовать с продолжительностью или тайм-аутом команды: 34 миллисекунды - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppili, если вы проверяете условие видимости, эта ошибка никогда не будет выдаваться ... поскольку мой предоставленный код всегда будет выдавать TimeoutException, если условие видимости элемента не соответствует действительности ... может быть, вы собираетесь найти элемент как driver.findElement(By.linkText("menu"));, поэтому вы получаете исключение. .попробуйте с WebDriverWait как предусмотрено.. - person Saurabh Gaur; 20.07.2016
comment
Я использую ваш код, только я не изменился, я просто изменился на Xpath вместо LinkText, например - WebDriverWait wait = new WebDriverWait(driver, 100); WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(html/body/header/div[1]/ul/li/a/span))); эл.щелчок(); - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppili Я понял .. вам следует попробовать ExpectedConditions.elementToBeClickable вместо ExpectedConditions.visibilityOfElementLocated, потому что elementToBeClickable проверяет видимость и включает, ... и если не получается .. попробуйте использовать JavascriptExecutor для выполнения щелчка .. см. обновленный ответ ... надеюсь, это поможет .. :) - person Saurabh Gaur; 20.07.2016
comment
Извините, не работает. также увеличил задержку до 60. Не уверен в поведении приложения. Вчера работало в IE, сегодня не работает. Кроме того, хром вчера работал нестабильно. Сегодня работал с утра, сейчас не работает. - person Suneel Kuppili; 20.07.2016
comment
Запуск ChromeDriver 2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b) на порту 47274. Разрешены только локальные подключения. FAILED: testCheckFarmerData org.openqa.selenium.ElementNotVisibleException: элемент не виден (информация о сеансе: chrome = 51.0.2704.103) - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppili, не могли бы вы сказать мне, когда эта ошибка возникла во время поиска элемента или во время нажатия ?? - person Saurabh Gaur; 20.07.2016
comment
И вы пытались найти By.linkText или By.XPath?? - person Saurabh Gaur; 20.07.2016
comment
найти элемент. потому что элемент не виден. Если элемент найден, он может щелкнуть. - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppili Хорошо, один раз используйте ExpectedConditions.presenceOfAllElementsLocatedBy и попробуйте щелкнуть, используя JavascriptExecutor как WebDriverWait wait = new WebDriverWait(driver, 10); el = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//ul[@class='nav nav1']/descendant::span[contains(.,'menu')]"))); ((JavascriptExecutor)driver).executeScript("arguments[0].click()", el);, и дайте мне знать .. - person Saurabh Gaur; 20.07.2016
comment
Невозможно сохранить с указанным выше кодом. говорит, что Cp1252 не может быть сопоставлен. Может из-за :: - person Suneel Kuppili; 20.07.2016
comment
Но, провел тест. Это не удалось. Пишет, неверный xpath. SyntaxError: Не удалось выполнить «оценку» в «Документе»: строка «//ul[@cla??ss='nav nav1']/descendant::span[contains(.,'menu')]' не является допустимое выражение XPath. (Информация о сеансе: chrome=51.0.2704.103) (Информация о драйвере: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b), платформа=Windows NT 6.1.7601 SP1 x86_64) (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека:) Продолжительность команды или время ожидания 16 миллисекунд - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppili посмотрите обновление edited2.. используйте его... ваше исключение произошло из-за того, что '' вы предоставляете одно и то же как внутри, так и снаружи xpath.. в любом случае попробуйте с edited2 ответь и дай мне знать - person Saurabh Gaur; 20.07.2016
comment
Нет. Я пробовал и с 60. FAILED: testCheckFarmerData org.openqa.selenium.TimeoutException: истекло время ожидания через 60 секунд после ожидания наличия элемента, расположенного по: By.xpath: //ul[@cla??ss='nav nav1']/descendant::span[contains (.,'меню')] - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppiliis есть ли на вашей странице диапазон с текстом menu ?? - person Saurabh Gaur; 20.07.2016
comment
Нет другого диапазона с меню - person Suneel Kuppili; 20.07.2016
comment
@SuneelKuppili Меню или меню?? - person Saurabh Gaur; 20.07.2016
comment
@SuneelKuppili, как вы опубликовали исключение, говорит, что тайм-аут истек через 60 секунд ожидания присутствия элемента, расположенного по: By.xpath: //ul[@cla??ss='nav nav1']/descendant::span[contains(.,' меню')] в то время как правильный xpath - //ul[@class='nav nav1']/descendant::span[contains(.,'menu')].... зачем добавлять ?? с классом... проверьте это, пожалуйста - person Saurabh Gaur; 20.07.2016