Как выбрать переключатель в Selenium WebDriver, когда идентификатор локатора отличается на каждой странице - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно выбрать первый переключатель для поля «Продукт» на первой вкладке моей веб-страницы. Затем скрипт переместится на вторую вкладку с тем же URL. Во второй вкладке также необходимо выбрать первый переключатель. Проблема в том, что идентификатор переключателя отличается на каждой вкладке, и мне трудно найти этот элемент. Локатор идентификатора, локатор CSS, xpath и т. д. различаются в каждой вкладке для каждого переключателя. Пожалуйста, помогите

Вот мой код.

WebElement productRadio = driver.findElement(By.xpath("//input[@type='radio']"));
wait = new WebDriverWait(driver, 120);
wait.until(ExpectedConditions.elementToBeClickable(productRadio));
Thread.sleep(5000);
    			   			  			
     
@SuppressWarnings("unused")
boolean str2 = medicalproductRadio.isSelected();
     
if (str2)
    { System.out.println("Radio button already selected!"); }

else
    {
 
    	Actions actions = new Actions(driver);
    	actions.moveToElement(productRadio).click().perform();
    	System.out.println("Radio Button selected by Test Script");
    }

Так как это первый переключатель, я попытался использовать xpath //input[@type='radio']

Но скрипт не выбирает переключатель, и я получаю сообщение об ошибке,

org.openqa.selenium.TimeoutException: ожидаемое условие не выполнено: ожидание нажатия элемента

Вот исходный код

<script id="SelectTemplate" type="text/x-jsrender">
    <div class="{{>~getCssClass(~layout,null,true)}}">
        <label class="radio-label-align-middle" for="{{>Name}}" {{if Visible === true}} style='display:block;' {{else}} style='display:none;' {{/if}}>
            {{>Label}}
            {{if ~hasRequiredValidation(FullName) }}
            <em>*</em>
            {{/if}}
        </label>
    </div>
    <div class="{{>~getCssClass(~layout)}} select-wrapper"  {{if Visible === true}} style='display:block;' {{else}} style='display:none;' {{/if}}>
        {{if IsMultiline === true}}
        <select id='{{>Name}}{{:~getFormInstanceId()}}' name='{{>Name}}{{:~getFormInstanceId()}}' customrule='{{>HasCustomRule}}' data-placement="bottom" data-toggle="tooltip" title='{{>HelpText}}'
                class='form-control multi-select {{if Enabled === false}} disabled {{/if}}'
                {{if Visible === true}} style='display:block;' {{else}} style='display:none;' {{/if}}
                {{if Enabled === false}} disabled="disabled" {{/if}}
                multiple='multiple' data-link='{{>FullName}}' data-journal='{{>FullName}}'>
            {{else}}
            <select id='{{>Name}}{{:~getFormInstanceId()}}' name='{{>Name}}{{:~getFormInstanceId()}}' customrule='{{>HasCustomRule}}' data-placement="bottom" data-toggle="tooltip" title='{{>HelpText}}'
                    class='form-control hastooltip {{if Enabled === false}} disabled {{/if}}'
                    {{if Visible === true}} style='display:block;' {{else}} style='display:none;' {{/if}}
                    {{if Enabled === false}} disabled="disabled" {{/if}}
                    data-link='{{>FullName}}' data-journal='{{>FullName}}'>
                <option value="[Select One]">[Select One]</option>
                {{/if}}

                {{for ~sortDropDownItems(Items,IsSortRequired) ~defaultValue=DefaultValue}}
                {{if ~defaultValue === ItemValue}}
                <option value="{{>ItemValue}}" selected>{{>ItemText}}</option>
                {{else}}
                <option value="{{>ItemValue}}">{{>ItemText}}</option>
                {{/if}}
                {{/for}}
            </select>
    </div>
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...