如何在Xpath中传递动态值

时间:2015-06-08 10:23:00

标签: c# selenium xpath selenium-webdriver

这是我在这篇博客中的第一个问题。

我正在使用C#Automation从事Selenium工作并遇到了障碍。我需要点击一个非静态的复选框,ID也不是静态的,所以我决定使用XPATH。

XML代码:

<div id="divJqTreeAPOS" class="tree tree-checkbox" style="height: 300px; overflow-y: scroll; overflow-x: hidden; direction: ltr;">
    <ul class="ltr">
       <li id="ChassisId:10088" class="last closed" data="POWER CONNECT 2816">
          <a class="" style="" href="">
          <ins/>
          POWER CONNECT 2816 - (3)
          </a>

生成XPATH:.//*[@id='ChassisId:10088']/a/ins Vale ChassisId:10088是动态的,请帮我创建一个方法。

这就是我的尝试:

public void SelectProductGroup(string ChassisID)
    {
        //.//*[@id='ChassisId:10088']/a/ins
        webDriver.FindElement(By.XPath(".//*[@id="+ChassisID+"]/a/ins"));
    }`

4 个答案:

答案 0 :(得分:1)

在XPath中,您需要围绕字符串值使用单引号或双引号,以便将webDriver.FindElement(By.XPath(".//*[@id="+ChassisID+"]/a/ins"));更改为webDriver.FindElement(By.XPath(".//*[@id='"+ChassisID+"']/a/ins"));

答案 1 :(得分:1)

如果Id是动态的,您可以使用以下XPath。

//webDriver.FindElement(By.XPath("//*[contains(@id,"ChassisId')]/a/ins[contains(text(),'POWER CONNECT')]")

答案 2 :(得分:0)

如果您的ID不断变化,例如重量90,重量80等。

尝试

FindElement(By.XPath(“// * [contains(@id,”weight')]“),这将被接受。

答案 3 :(得分:0)

试试这个:

driver.findElement(By.xpath(“// li [contains(@id,'ChassisId:')] / a / ins”));