这是我在这篇博客中的第一个问题。
我正在使用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"));
}`
答案 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”));