C# 如何在Xpath中传递动态值

C# 如何在Xpath中传递动态值,c#,selenium,xpath,selenium-webdriver,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 clas

这是我在这个博客里的第一个问题

我正在用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中,字符串值周围需要单引号或双引号,因此更改
webDriver.FindElement(By.XPath(“./*[@id=“+ChassisID+”]/a/ins”)
to
webDriver.FindElement(By.XPath(“./*[@id=”“+ChassisID+”]/a/ins”)

您可以使用下面的XPath,如果Id是动态的,它将起作用

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

如果您的id是持续更改的,例如,weight90、weight80等

试一试

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

尝试以下方法:


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

我很高兴。请您将我的答案标记为已回答。谢谢
//webDriver.FindElement(By.XPath("//*[contains(@id,"ChassisId')]/a/ins[contains(text(),'POWER CONNECT')]")