【问题标题】:How to click a dynamic element in span class? Selenium WebDriver如何单击跨度类中的动态元素? Selenium 网络驱动程序
【发布时间】:2015-07-10 08:55:53
【问题描述】:

大家好,我在这种情况下遇到了问题。请给建议做什么。

尝试使用此 xpath(不工作):

.//*[@id='76']/div/div[3]/span[1]/span

请帮帮我。

注意:“显示详细信息”链接是可点击的,它们有不同的ID,黄色标记的那个是不能点击的。

感谢所有愿意就此分享想法的人 谢谢!

【问题讨论】:

  • 有没有办法找到Show Details链接上方显示的文字(如Employee 545454...)?因为我没有在 HTML 中看到它。
  • @Sham 是的,单击显示详细信息链接按钮将显示此图像。有关更新的详细信息,请参阅我的原始帖子
  • 哥们,我这样说吧。为了在 UI 中点击Nth Show Details 链接,我们需要知道需要点击哪个链接。从第一张图片,我们可以说 Show Details[2],因为我们用一些测试数据来识别它,比如Employee...。因此,为了准确获得要单击的 Show Details 链接,我们需要与该链接关联的测试数据。如果可能,获取Employee 5454.. 的 HTML,而不打开显示详细信息链接?
  • @Sham 不确定我是否正确理解了您,但我会尝试在上面发布整个 html。再次感谢您
  • 已修复!这个元素在框架内

标签: xpath dynamic selenium-webdriver automated-tests firepath


【解决方案1】:

你可以尝试如下:

xpath=(//span[text(), '显示详细信息'])[76]

正如您所说的“显示详细信息”的 id 不断变化,那么您必须将当前 id 替换为 76。

希望这个 xpath 对你有用。

【讨论】:

  • 嗨@Sourav 感谢您的回复。虽然这似乎不起作用。
【解决方案2】:

尝试基于 xpath 文本的搜索

//span[contains(text(),'Show Details')]

它可以让你找到跨度而不用关心空格

【讨论】:

  • 我已经尝试过了,但仍然出现 NoElementException。我认为因为文本具有相同的标签,它们只是在 ID 上有所不同,例如 75 、76、77 .. 感谢您的回答。
  • 可以把图片换成html吗?
【解决方案3】:

也可以使用class name

// driver is the selenium driver object. Need to make sure, compound names are not allowed
IWebElement span = driver.FindElement(By.ClassName("message-action-menu-text")); 

【讨论】:

  • 这不适用,因为页面有很多操作菜单文本。谢谢
  • OP 中没有提到有多个具有相同类名的类。此外,这只是一种解决方案,如果您有多个元素,我们可以使用索引。不为元素提供 ID 属性不是设计不可接受的页面和事件的正确方法:)。发布页面的 HTML 而不是 Image,这可能会获得更多响应。
  • 是的,感谢您的建议。我将尝试再次编辑我的线程。非常感谢您的回复
【解决方案4】:

请尝试以下方法:

//*[@id='76']//span[@class='message-action-menu-text']

【讨论】:

  • 您好,我也试过这个,但结果相同,找不到元素。谢谢您的帮助。 :(
猜你喜欢
  • 2019-05-04
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 2018-10-20
  • 2011-07-11
相关资源
最近更新 更多