2016-08-02 1 views
0

У меня есть поверочного тег, который выглядит как кнопка на HTML тегКак нажать на кнопку, созданную с помощью <span> тег для Selenium WebDriver

<span class="middle">Next</span> 

Я попытался с помощью

xpath=driver.findElement(By.xpath(".//*[@id='modal-actions-panel']/div[2]/a/span/span/span")); // by considering fixed id as reference 

Использование абсолютного

xpath=driver.findElement(By.xpath("html/body/div[4]/div[2]/a/span/span/span")); // took this from firebug 

и с использованием

driver.findElement(By.cssSelector("span[class='middle']")); 

Без успеха !! Это бросает ниже исключением:

Исключение в потоке «основного» org.openqa.selenium.NoSuchElementException: Не удалось найти элемент: { «метод»: «» XPath «селектор»: "// оболочка [содержит (., \ «Далее \»)] "} длительность команд или тайм-аут: 30.12 секунд Для документации на эту ошибку, пожалуйста, посетите: http://seleniumhq.org/exceptions/no_such_element.html

Для всех способов, которыми я пытался это показывает то же самое исключение с изменение деталей селектора. Может кто-то, пожалуйста, помогите мне найти решение, чтобы я мог найти кнопку Next, которая находится в теге span и щелкнуть по ней.

Следующая кнопка находится в iFrame: Ниже приведена часть требуемого тэга span покрытия html.

Следующая

Я также попытался с :

driver.switchTo().frame("iframe-applicationname_ModalDialog_0"); 
WebElement el = driver.findElement(By.cssSelector("span.middle")); 

Но метания ниже ошибки:

Вызванный: org.openqa.selenium.ElementNotVisibleException: Элемент в настоящее время не видно и поэтому не может быть взаимодействовали с

Пожалуйста, дайте я знаю, если понадобится то, что мне не хватает.

+0

Селекция CSS r выглядит правильно. Чтобы проверить xpath: откройте страницу вручную с помощью firefox. Нажмите F12, чтобы открыть инструменты разработчика и переключиться на консоль. Введите '$ x (" // span [@ class = 'middle'] "). Length', чтобы узнать, сколько элементов соответствует этому Xpath. Если Selenium не находит его, вы можете смотреть на неправильное окно или фрейм. –

+0

Я могу видеть счет как 0. Но когда я нажимаю правой кнопкой мыши на кнопке Next и проверяю элемент, я могу просто увидеть Next и xpath (s), как упоминалось выше. Как я могу это исправить? –

+0

Вы искали фрейм или iframe ?? Может ли этот элемент находиться внутри любого кадра или iframe? Подтвердите это. –

ответ

-1

Я думаю, что этот элемент находится внутри фрейма или фрейма, если после этого вам нужно переключить этот кадр или IFRAME, прежде чем найти элемент, как показано ниже: -

driver.switchTo().frame("iframe-applicationname_ModalDialog_0"); 
WebElement el = driver.findElement(By.cssSelector("span.middle")); 
el.click(); 

//Now after all your stuff done inside frame need to switch to default content 
driver.switchTo().defaultContent(); 

Edited1: - Если вы получаете исключение в качестве элемента в настоящее время не видна необходимость реализации WebDriverWait подождать, пока элемент виден, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver, 10); 

//Find frame or iframe and switch 
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("iframe-applicationname_ModalDialog_0")); 

//Now find the element 
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//span[@class = 'middle' and contains(text(), 'Next')]"))); 
el.click(); 

//Once all your stuff done with this frame need to switch back to default 
driver.switchTo().defaultContent(); 

Edited2: - Если, к сожалению, не становится видна попытка нажать на него, используя JavascriptExecutor, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver, 10); 

//Find frame or iframe and switch 
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("iframe-applicationname_ModalDialog_0")); 

//Now find the element 
WebElement el = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//span[@class = 'middle' and contains(text(), 'Next')]"))); 

//Now click using JavascriptExecutor 
((JavascriptExecutor)driver).executeScript("arguments[0].click()" el); 

//Once all your stuff done with this frame need to switch back to default 
driver.switchTo().defaultContent(); 
+0

Saurabh, вы правы! –

+0

@MounikaNannaka тогда нужно переключить этот кадр, прежде чем искать элемент ... использовать предоставил ответ и дайте мне знать .. :) –

+0

Если cssSelector не находит правильный элемент, вы можете использовать 'By.xpath (" .// span [@class = 'middle' и содержит (., 'Next')] ") '... вместо .. :) –

0

Попробуйте это ....

driver.findElement(By.xpath("//span[contains(@class,'middle') and contains(text(), 'Next')]")) 
0

Попробуйте новый WebDriverWait (водитель, 30) .until (ExpectedConditions.visibilityOfElementLocated (By. xpath ("// span [содержит (@ class, 'middle') и содержит (text(), 'Next')]"))). click(); ``

-1

Я пробовал, и он работал для me:

WebElement actionBtn=driver2.findElement(
    By.xpath("//span[contains(@class,'v-menubar-menuitem-caption') 
    and contains(text(), 'Actions')]") 
); 
actionBtn.click(); 
Смежные вопросы