2016-07-12 5 views
1

это HTML, я просто хочу протестировать его через веб-драйвер селена (java). есть ошибкаВыбор переключателя через селен Java

Исключение в потоке «основного» org.openqa.selenium.ElementNotVisibleException: элемент не виден

Может быть ниже HTML поможет вам понять мой вопрос

<html> 
<head></head> 
<body> 
<ul class="list-unstyled"> 
<li> 
<label class="chkbox"> 
<input type="radio" required="required" data-optioncode="displayDefaultForm"   data-statusid="22" data-module="19" name="status"> 
<span class="lbl"></span> 
</label> 
<button class="btn module-status-style btn-xs mb5" style="background-color: #ffffff; border-color: #e1e1e1; color:#666666;">Unqualified</button> 
</li> 
<li> 
<label class="chkbox"> 
<input type="radio" required="required" data-optioncode="displayDefaultForm" data-statusid="23" data-module="19" name="status"> 
<span class="lbl"></span> 
</label> 
<button class="btn module-status-style btn-xs mb5" style="background-color: #e4e7ea; border-color: #cccccc; color:#636e7b;">Attempted to Contact</button> 
</li> 
<li> 
<label class="chkbox"> 
<input type="radio" required="required" checked="" data-optioncode="displayDefaultForm" data-statusid="24" data-module="19" name="status"> 
<span class="lbl"></span> 
</label> 
<button class="btn module-status-style btn-xs mb5" style="background-color: #5bc0de; border-color: #46b8da; color:#ffffff;">Contacted</button> 
</li> 
<li> 
<label class="chkbox"> 
<input type="radio" required="required" data-optioncode="displayConvertedForm" data-statusid="25" data-module="19" name="status"> 
<span class="lbl"></span> 
</label> 
<button class="btn module-status-style btn-xs mb5" style="background-color: #1caf9a; border-color: #17a08c; color:#ffffff;">Converted</button> 
</li> 
</ul> 
</body> 
</html> 

, пожалуйста, помогите мне проверить переключатель через java selenuim

+0

Показать код Java. – raduation

+0

Я нажал на переключатель через Xpath 'driver.findElement (By.xpath (".// * [@ id = 'frm-modulestatuses']/div [1]/ul/li [4]/label/input ")). click(); ' – niazi

+0

@niazi в качестве предоставленного HTML отсутствует элемент с id 'frm-modulestatuses' ... поэтому не могли бы вы рассказать нам, какой переключатель вы хотите выбрать? –

ответ

0

Я могу представить два сценария, почему ваши переключатели не видны.

  1. Ваша кнопка радио не видно по времени сценарий нажимает на это
  2. Ваша кнопка радио действительно спрятан и как-то вам нужно, чтобы сделать вид, например, нажмите кнопку или развернуть список.

Общие решения:

1: Если радио-кнопка не видна на время ваш скрипт нажимает на него: вам нужно будет ждать, пока она появится,

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[type='radio']")); 

2: Если ваша радиокнопка скрыта, вам нужно как-то заставить ее появиться, я не знаю, как именно будет выглядеть ваша веб-страница, поэтому вам придется это обозначить o ut самостоятельно или покажите нам свою веб-страницу.

1

Исключение означает, что элемент отсутствует t видно. Selenium не может воздействовать на элементы, которые не видны, поскольку он предназначен для эмуляции поведения пользователя. Проверьте стили CSS и убедитесь, что элемент, который вы пытаетесь щелкнуть, отображается. Если вам нужно щелкнуть скрытый элемент, используйте JavascriptExecutor для непосредственного выполнения JavaScript-клика.

1

По вашему предоставленному HTML, вы должны попробовать, как показано ниже, чтобы выбрать радио: -

String textToFindRadio = "Unqualified" 
//you can provide also "Attempted to Contact" or "Contacted" or "Converted" to select that specific radio. 

driver.findElement(By.xpath("//input[@type = 'radio' and (following::button[contains(text(), '" + textToFindRadio + "')])]")).click(); 

Надеется, что это будет работать ... :)

1

Как Саурабх сказал, что нет никакого элемента присутствует в вашем код с id frm-modulestatuses. Я проверил ваш код и нажав на переключатель, вы можете просто использовать xpath =. // ul/li [4]/label/input, где li [4] для последней кнопки as - Xpath showing button и ее рабочие

1

У меня есть следующий подход для вашего запроса: Использование xpath://input[@type='radio']

Код:

WebElement ele = driver.fidnElement(By.xpath("//input[@type='radio']")); 
ele.click(); 

Попробуйте выше подход.

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