如何为动态ID / Webelement编写xpath?

时间:2014-05-23 13:11:27

标签: html html5 xpath selenium-webdriver

我正在尝试找到此网站链接的“登录”按钮 - monsterIndia Login但是“登录”按钮的xpath会不断变化。我提到了我用过的xpaths

-First XPath -

html/body/form/table/tbody/tr/td/table[3]/tbody/tr/td/div[2]/table/tbody/tr[7]/td/div[2]/input,

第二次XPath -

html/body/form/table/tbody/tr/td/table[3]/tbody/tr/td/div[2]/table/tbody/tr[8]/td/div[1]/input 

但是当我第三次尝试找到它时,它再次改为

.//*[@id='contact_']/tbody/tr/td/table/tbody/tr/td[1]/table/tbody/tr[7]/td/div[2]/input

HTML代码 -

        <tbody>
         <tr>
         <tr>
         <tr>
         <tr>
         <tr>
         <tr>
         <tr>
        <td class="font_11" valign="top" bgcolor="#FFFFFF">
        <div style="float:left">
        <div style="float:left; margin-left:10px;">
        <input width="54" type="image" height="23" border="0" value="" name="submit"  src="https://media4.monsterindia.com//monster_2012/btn_login.jpg"/>
        </div>

在HTML代码中,tr的数量从7和8变化,div也从1和2变化 我附上了整个HTML代码enter image description here

的屏幕截图

1 个答案:

答案 0 :(得分:1)

在自动化中使用绝对xpath来定位元素是非常糟糕的做法。而不是使用绝对xpath,你可以使用相对xpath。

登录按钮定位器

xpath

By.xpath("//input[@name='submit']")

cssSelector

By.cssSelector("[name='submit']")