当id是动态时,Selenium选择具有多个属性的元素

时间:2016-11-24 16:31:07

标签: c# asp.net selenium nunit

我正在编写一个可以登录网站的测试。我正在使用C#,与Selenium 1)密码有两个ID?!为什么会有人像这样编码呢? 2)ID包含动态的编号,并在每次加载页面时不断更改。

唯一不同的是名称ID是:

    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 个答案:

答案 0 :(得分:1)

你的问题到处都是。我会尝试使用类似下面的xpath。我无法判断你是否有两个密码&#34;元素显示在页面上或只是一个。发布HTML,我们可以帮助您更好。

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

  or 

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