【问题标题】:How to write xpath for Dynamic ID/Webelement?如何为动态 ID/Webelement 编写 xpath?
【发布时间】:2014-10-23 16:09:09
【问题描述】:

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

-第一个 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代码的截图

【问题讨论】:

  • 那里有静态和唯一的值,例如它是一个input,它有一个静态的src
  • @Arran Arran 是为我在上面的代码中提到的同一网站查找元素的正确方法。 Xpath>window.findElement(By.xpath("//img[@src='media.monsterindia.com/monster_2012/…;。我问这个是因为在我的代码中放入这个xpath之后我得到了ElementNotVisibleException异常

标签: html xpath selenium-webdriver


【解决方案1】:

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

登录按钮定位器

xpath

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

css选择器

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

【讨论】:

  • @Santoshsharrma 先生,这是定位元素 Xpath 的正确方法吗> window.findElement(By.xpath("//img[@src='media.monsterindia.com/monster_2012/…;.跨度>
  • 仅正确。您也可以使用包含。 by.xpath("//img[contains(@src,'media')]")
  • @Santoshsharma 谢谢先生
猜你喜欢
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2017-11-02
  • 2020-12-16
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多