2016-11-24 4 views
0

Я пишу тест, который может войти на сайт. Я использую C#, с Selenium.
1) есть два идентификатора для пароля ?! зачем кому-то это кодировать?
2) Идентификатор содержит номер, который является динамическим и продолжает меняться каждый раз, когда страница загружается.Элемент выбора селена с несколькими атрибутами, когда идентификатор является динамическим

только отличается с именем идентификатор:

id="txtPassword_155799780_I_CLND" 
    id="txtPassword_155799780_I" 

Я попробовал все.

driver.FindElement(By.XPath(".//div[starts-with(@id,'txtPass') and contains(@text(),'I_CLND')]")); 

    driver.FindElement(By.XPath("//input[starts-with(@id,'txtPassword_')]")[2]); 





<input class="dxeEditArea_DevEx dxeEditAreaSys dxh0" id="txtPassword_156029875_I_CLND" type="text" tabindex="0" saveddisplay="[object Object]"> 

<input class="dxeEditArea_DevEx dxeEditAreaSys dxh0" id="txtPassword_156029875_I" name="txtPassword_156029875" onfocus="ASPx.EGotFocus('txtPassword_156029875')" onblur="ASPx.ELostFocus('txtPassword_156029875')" onchange="ASPx.EValueChanged('txtPassword_156029875')" type="password" saveddisplay="[object Object]" savedspellcheck="[object Object]" spellcheck="false" style="display: none;"> 

Благодаря

ответ

1

Ваш вопрос вроде повсюду. Я бы попытался использовать что-то вроде ниже xpath. Я не могу сказать, есть ли у вас два элемента «пароля», отображаемых на странице или только один. Отправьте html, и мы можем помочь вам лучше.

//input[contains(@id, 'txtPassword')][1] 

    or 

    //input[contains(@id, 'txtPassword') and @type='text'] 
+0

Благодарим за добавление html. Добавлены некоторые варианты для вас. – Dazed

+0

Я действительно редактировал свой вопрос. Надеюсь, теперь это яснее. –

+0

Попробуйте выше, и если он сработает, примите ответ. Если не сообщите нам, что произошло. – Dazed