2016-07-21 2 views
1

Я работаю со старым порталом, и мне нужно использовать IE. Есть некоторые вещи, которые он не находит, потому что это часть меню <td>, я попытался найти его на XPath, но это не поможет.Selenium C# как найти элемент с помощью JavaScript?

Я нашел, что форма отображается функцией JavaScript. И я бы хотел нажать на них только для его выполнения, но как я могу найти элементы страницы, используя selenium WebDriver ??

Например: если у меня был этот код

<div class="logout-link ng-scope" 
    ng-click="login(&quot;github&quot;)" 
    ng-show="!me" ng-controller="MenuCtrl">login</div> 

Как я могу выполнить нг щелчок часть с Selenium WebDriver?

+0

Что вы подразумеваете под «Я пытался найти его XPath, но не помогает». Там есть какое-либо исключение или что-то еще. Также дайте –

+0

Ну, потому что у меня нет реальный код сети. Это на другом ПК, где я не могу извлечь какой-либо код, поэтому я решил привести еще один пример. Появилась панель инструментов, и xpath нашел каждый инструмент, но я просто не мог щелкнуть по одному, потому что все из них имели одинаковые атрибуты, но javascript. Поэтому мне нужно было выполнить один javascript в конкретном. Вот почему. –

+0

Мне нравится, как принятый ответ не имеет ничего общего с титлом. https://stackoverflow.com/questions/11688694/selenium-error-when-using-javascript-or-getting-elements – George

ответ

0

Почему вы хотите, чтобы выполнить Javascript, чтобы найти элемент ??? Попробуйте использовать WebDriverWait подождать, пока элемент видимого и кликабельно, как показано ниже: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

var Login = wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//div[text() = 'login']"))); 
Login.Click(); 

Примечание: - убедитесь, что, прежде чем попробовать этот элемент не внутри любого frame

Надеется, что это помогает .....:)

+1

Вы были правы, это действительно сработало для меня, спасибо вам большое! –

+0

@NancyCruz вы приветствуете. рад помочь..:)..Я предлагаю в следующий раз, когда вы зададите вопрос, предоставьте по крайней мере некоторую информацию, которую вы пробовали, и что было результатом, если исключение поделится ею, поэтому опытный человек может дать вам правильное решение как можно скорее. В любом случае Счастливое обучение ... :) –

0
  1. Убедитесь, что вы пытаетесь найти элемент в том же фрейме, в котором он находится. Ответ пример: How to switch between frames in Selenium WebDriver using Java
  2. Try ждать элемента появляться и будут доступны: http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
  3. Надеюсь, вы знаете, как найти элементы через JS (document.getElementsByClassName («выход из системы линии связи нг-сфера»)) и вот ответ на горячем использовать JS в C#: Execute JavaScript using Selenium WebDriver in C# - Единственное отличие состоит в том, что вам не нужно ничего возвращать - вам нужно только '.click()
+0

Спасибо. Он не работает с фреймом, потому что в сети нет фрейма. Я действительно использовал ожидание, и он отлично работает. Это не настоящий код, в реальном коде нет идентификатора или имени класса, которые могут быть идентифицированы. –

0

при нажатии на веб-элемента вы создаете выполняет функцию, связанную , Посмотрите через CSS Selector против нг-клик:

IWebElement elem = driver.FindElement(By.CssSelector("div[ng-click=login(&quot;github&quot;)]")); 
elem.click(); 

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

IWebElement elem = driver.FindElement(By.CssSelector("div[ng-click=login(&quot;github&quot;)]")); 
Actions action = new Actions(driver); 
action.MoveToElement(elem).Click().Build().Perform(); 
+0

эта ошибка меняет: «Недействительный селектор: был указан недопустимый или незаконный селектор \ n" –

Смежные вопросы