2016-08-01 2 views
1

Я новичок в selenium webdriver. Я пишу сценарий с помощью Java, но я застрял в написании сценария, я хочу, чтобы выбрать кнопку радио, но я получаюКак выбрать переключатель в селене webdriver?

Исключение в потоке «основной» org.openqa.selenium.ElementNotVisibleException: Элемент не отображается (ВНИМАНИЕ: сервер не предоставил информацию о стеке ).

Это я написал:

WebElement radioButton = driver.findElement(By.id("Radio_0_2461A")); 
radioButton.sendKeys(Keys.SPACE); 

Ниже HTML код:

HTML code for Find button. 

<button class="button right secondary" id="selectProducts0" onclick="getProducts('0'); return false;"> 
     Find Products 
    </button> 

После нажатия кнопки продукт будет загружен, и я должен выбрать продукт из списка.

<div class="clearboth" id="productList0" style="overflow: hidden; display: block;"> 
    <div class="productTableContainer" data-index="0"> 

<table class="responsive" cellspacing="0" cellpadding="0" summary="List of products"> 
    <tbody>    
    <tr data-row-data='{"earlyRepaymentCharges":[],"incentives":[]}'> 
    <th class="radio"> 
    <input id="0_2689A_StartDate" type="hidden" value="28/06/2016 00:00:01"> 
    <input name="Products[0].ProductCode" title="Lifetime Tracker with £999 Fee" id="Radio_0_2689A" type="radio" value="2689A"> <label for="Radio_0_2689A"> 
    Lifetime Tracker with £999 Fee </label> 

<tr data-row-data='{"earlyRepaymentCharges":[{"step":"1","durationInMonths":"","endDate":"30/11/2016","percentage":"1%"}],"incentives":[]}'> 
    <th class="radio"> 
    <input id="0_5555A_StartDate" type="hidden" value="01/11/2015 00:01:00"> 
    <input name="Products[0].ProductCode" title="1 Year Fixed Rate Until 30/11/2016 with £999 Fee" id="Radio_0_5555A" type="radio" value="5555A"> 
<label for="Radio_0_5555A"> 1 Year Fixed Rate Until 30/11/2016 with £999 Fee 
</label> 

<tr data-row-data='{"earlyRepaymentCharges":[{"step":"1","durationInMonths":"","endDate":"28/02/2017","percentage":"2%"},{"step":"2","durationInMonths":"","endDate":"28/02/2018","percentage":"1%"}],"incentives":[]}'> 
<th class="radio"> 
<input id="0_2461A_StartDate" type="hidden" value="18/12/2015 00:01:00">       
<input name="Products[0].ProductCode" title="2 Year Fixed Rate Until 28/02/2018 with £999 Fee" id="Radio_0_2461A" type="radio" value="2461A"> 
<label for="Radio_0_2461A">2 Year Fixed Rate Until 28/02/2018 with £999 Fee 
</label> 
+0

Пожалуйста, разместите свой код в самом вопросе, а не свяжите нас с ним. – ragingasiancoder

ответ

1

Я думаю, что кнопка переключателя будет динамически генерироваться. Попробуйте использовать By.name() с WebDriverWait ждать, пока кнопка радио видна, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver,10); 
WebElement radio = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("Products[0].ProductCode"))); 
radio.click(); 

Edited1: - Если переключатель ID фиксировано, то попробуйте использовать By.id с WebDriverWait подождать, пока кнопка радио видно, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver,10); 
WebElement radio = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Radio_0_2461A"))); 
radio.click(); 

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

WebDriverWait wait = new WebDriverWait(driver,10); 
WebElement radio = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("Radio_0_2461A"))); 
((JavascriptExecutor)driver).executeScript("arguments[0].click()", radio); 

Edited3: - если, к сожалению, Javascript щелчок мыши не работает на радио-кнопке попробуйте использовать JavascriptMouse события для выполнения нажми ниже: -

WebDriverWait wait = new WebDriverWait(driver,10); 
WebElement radio = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("Radio_0_2461A"))); 
((JavascriptExecutor)driver).executeScript("var clickEvent = document.createEvent('MouseEvents');clickEvent.initEvent ('click', true, true);arguments[0].dispatchEvent (clickEvent);", radio); 

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

+0

@PrashantBellale и как насчет ??? Он динамически изменен или исправлен? –

+0

Я думаю, что ID исправлен, я пробовал с ID, но все же это не переключатель выбора. фактический сценарий - я нажимаю кнопку поиска продукта, а затем дождался загрузки продукта, после загрузки продукта и выбора продукта. Я отвечу всем кодом, это поможет понять. –

+0

@PrashantBellale, когда вы пытались с id? Каков был результат? есть ли какие-либо исключения? необходимо поделиться им –