【问题标题】:How to get Xpath of div contains attribute with value如何获取 div 的 Xpath 包含具有值的属性
【发布时间】:2017-11-27 00:26:55
【问题描述】:

我正在尝试为我的硒测试找到一个元素。我尝试编写以下 xpath,但它似乎对我不起作用。

我试过了:

//div[contains(@tb-test-id, 'Distribution')]

注意:

我知道我可以使用 CssSelector 以及基于具体占位符 id 作为父节点的 Xpath:tabZoneId115 并且还使用 Xpath 中的相对路径。我的场景并不复杂,因为我想单击此页面上的其他几个元素,同样我需要为数百个测试用例编写元素。所以我打算写一个测试用例并尝试提供数据驱动的excel表,这样人们就可以通过只添加文本框的标题来维护测试用例,在这种情况下,'DISTRIBUTION'是文本框报告的标题。

请指导我如何找到适合我点击的元素。提前致谢。

【问题讨论】:

  • 你说的“似乎对我不起作用”是什么意思?你到底想选择什么?
  • 从 selenium webdriver 运行时收到错误消息。错误:无法定位元素。我想选择标题为“分发”的部分。它不是可点击的元素或任何东西,但是我单击的标题区域基本上选择了基础数据供我在该网页上下载。为简单起见,我想点击标题为“分发”的标题。
  • 可能是Html标签或属性从一开始就不存在。设置超时,以便 Selenium 在引发此错误之前继续尝试获取元素数秒。你在使用 Selenium 和 JavaScript 吗?
  • 你得到什么 driver.findElement(By.xpath("//div[contains(@tb-test-id, 'Distribution')]")).click();

标签: jquery selenium xpath selenium-webdriver xpath-2.0


【解决方案1】:

您已提供所有必需的详细信息,并且可能还回答了您自己的问题。

您也可以使用CssSelectorXpath。您可以通过以下任一方式获取WebElement 并将text 设置为Distribution

  • CssSelector

    div.tab-tiledViewer.placeholder.tab-widget.fade-in
    
  • Xpath

    //div[@class='tab-tiledViewer placeholder tab-widget fade-in']
    

但是,你不能在它上面调用click() 方法。 WebElement 是一个 <div> 标记,没有与之关联的 onClick() 事件。

【讨论】:

    【解决方案2】:

    CssSelector 帮助解决了我的问题。

    这有效: div[tb-test-id='Distribution']

    我通过运行 foreach 循环使用变量进行参数化。

    driver.findElement(By.cssSelector("div[tb-test-id='" + sheetName + "']")).click();

    感谢您的所有贡献。非常感谢你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多