2015-04-07 3 views
0

Я написал сценарий с использованием селена для добавления пользователя в приложение. В которой внутри цикла «for» есть Add_Button, который будет отображаться в начале (например, с первого пользователя). В то время как addiding второго пользовательского сценария будет искать скрытый элемент Add_Button, но его нет в наличии ошибок, так что я получаю:Как игнорировать скрытый элемент в селене

org.openqa.selenium.ElementNotVisibleException: Cannot click on element 

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

первая попытка: Не работает

if(browser.findElements(By.id("ext-gen72")).size()!=0){ 

browser.findElement(By.id("ext-gen72")).click(); 

} 

2-й Try: Не работает

int k=0; 

boolean doneOnce=false; 

do{ 

if (!doneOnce) { 

        //execute this only one time 
        browser.findElement(By.id("ext-gen72")).click(); 
        doneOnce=true; 

        } 

//rest of the code.... 

}While(k>10); 

ответ

0

WebElement видимый статус можно найти, используя isDisplayed() метод, если элемент присутствует на странице. Если элемент отсутствует на странице, он выкинет NoSuchElement исключение.

if(browser.findElement(By.id("ext-gen72")).isDisplayed()) 
browser.findElement(By.id("ext-gen72")).click(); 

Если элемент не присутствует на странице, как только щелкнул, вы можете использовать следующий код:

int k=0; 
boolean clickOnce=true; 

do{ 
if (clickOnce) { 
    browser.findElement(By.id("ext-gen72")).click(); 
    clickOnce=false; 
    } 
    // rest of the code 
}While(k>10); 
+0

Я уже пробовал этот метод, он не работает :( –

0
((JavascriptExecutor)browser).executeScript("arguments[0].click();", browser.findElement(By.id("ext-gen72")); 

Иногда скрытый элемент виден на странице, но водитель только может Кажется, это от него зависит. Вы можете использовать JavaScriptExecutor, чтобы обойти это, вызвав метод javascript click() для элемента, при условии, что этот элемент существует на странице.

+2

Не могли бы вы уточнить это немного? –

+0

разработан немного на моем предыдущем ответе. – aholt

+0

Можете ли вы объяснить подробнее на этом. Я получаю ошибку «JavaScriptExecutor» не может быть разрешен в тип »при использовании вышеуказанного кода. –

0

попробуйте следующий код

List<WebElement> elements = browser.findElements(By.id("ext-gen72"));  if(elements.size()!=0){ 
         for(WebElement element:elements){ 
       if(element.isEnabled()){ 
        element.click(); 
       }   } 

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

  • Нет связанных вопросов^_^