2016-09-06 3 views
2

Я автоматизирую процесс отправки отчетов в WebDriver, отчет имеет несколько страниц, и на всей странице будет кнопка Next, чтобы перейти на следующую страницу.Локаторы Selenium Webdriver

Следующая кнопка имеет следующие локаторы,

<a class="buttonNext btn btn-green btnwidth" href="javascript:;" style="">Next</a> 

Проблема заключается все Next кнопок в отчете имеют те же локаторы, так как мастер содержит следующую, предыдущая и кнопка отправки является общей по всему тексту доклада и изменится только содержимое страницы, но эта панель остается неизменной во всем отчете.

я могу использовать xpath кнопки Next, которая:

.//*[@id='wizard']/div[2]/a[3] 

Это xpath же для всех тех мест, где кнопка Next помещаются в отчете.

Мое кодирование даются, как показано ниже: -

driver.findElement(By.xpath("//div[@id='wizard']/div[2]/a[3]")).click(); 
Thread.sleep(3000); 

((JavascriptExecutor)driver).executeScript("scroll(0,2500)"); 
driver.findElement(By.xpath("//div[@id='wizard']/div[2]/a[3]")).click(); 
driver.findElement(By.xpath("//div[@id='wizard']/div[2]/a[3]")).click(); 

//WebDriverWait wait2 = new WebDriverWait(driver, 10); 
//WebElement element2 = wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Next"))); 

driver.findElement(By.id("SignatureDate")).click(); 
driver.findElement(By.id("SignatureDate")).clear(); 
driver.findElement(By.id("SignatureDate")).sendKeys("01/09/2016"); 

WebDriver является idenfying первой Next кнопки xpath и нажав на него, но на следующие два страниц снова я обеспечиваю то же xpath для доступа к кнопке Next, но селен выдает мне сообщение об ошибке как: -

ElementNotVisibleexception: элемент не отображается.

Как я могу отличить кнопку Next, чтобы идентифицировать ее для WebDriver?

Примечание: Отчет открыт в iframe & Я работаю в iframe.

+0

Почему ты прокомментировал эта строка кода 'wait.until (ExpectedConditions.elementToBeClickable (By.partialLinkText (« Далее »)));' ?? почему вы не пытаетесь с этим кодом дождаться, пока элемент будет видимым и кликабельным каждый раз? –

+0

Я тоже пробовал этот код как исполняемый, но он не работает для меня. – user3836485

+0

Что значит не работать? что было исключением, когда вы пытались использовать «WebDriverWait» ?? –

ответ

1

Вы можете использовать Явный Подождите, чтобы страница полностью загрузилась, прежде чем пытаться нажать кнопку «Далее» на другой странице. Кроме того, при использовании IFrames вы можете использовать ниже:

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("FRAME_NAME")); 
1

Вы должны попробовать использовать By.cssSele‌​ctor() каждый раз, когда с помощью WebDriverWait после переключения с iframe до defaulContent(), как показано ниже: -

//Do your stuff inside iframe 

//Now switch back to default content 
driver.switchTo().defaultContent(); 

new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSele‌​ctor("a.buttonNext")‌​)).click()