1
driver.findElement(By.xpath("//input[@type="+"checkbox"+"]/following-sibling:://td[contains(text(),"+"template"+"]"))

我的 HTML 是这样的

<tr>
<td class="tablecontent">
<input type="checkbox" value="59781" name="templateIds">
</td>`enter code here`
<td class="tablecontent"> test11 </td>
</tr>

org.openqa.selenium.InvalidSelectorException:给定的选择器 //input[@type=checkbox]/following-sibling:://td[contains(text(),template] 无效或不会生成 WebElement。发生以下错误:InvalidSelectorError: Unable to locate an element with the xpath expression //input[@type=checkbox]/following-sibling:://td[contains(text(),template] 因为以下错误:[异常...“表达式不是合法表达式。”代码:“12”nsresult:“0x805b0033(SyntaxError)”位置:“file:///C:/Users/sanjdash/AppData/Local/Temp/anonymous3529970525380845680webdriver-profile /extensions/fxdriver@googlecode.com/components/driver_component.js 行:5956"] 命令持续时间或超时:72 毫秒有关此错误的文档,请访问: http://seleniumhq.org/exceptions/invalid_selector_exception.html构建信息:版本:'2.37.0',修订:'a7c61cbd68657e133ae96672cf995890bad2ee42',时间:'2013-10-18 09:51:02'

4

3 回答 3

5

看起来你搞砸了引号。在 XPath 中使用单引号来避免这样的问题。

// if template is the text within your XPath
driver.findElement(By.xpath("//input[@type='checkbox']/following-sibling:://td[contains(text(), 'template']"));

// if template is your variable, then it should be
driver.findElement(By.xpath("//input[@type='checkbox']/following-sibling:://td[contains(text(), " + template + "']"));

另外,请仔细阅读错误,它已经提供了足够的信息。如您所见,消息中的选择器中没有引号。

给定的选择器 //input[@type=checkbox]/following-sibling:://td[contains(text(),template] 无效或不会生成 WebElement。

于 2013-10-30T22:02:43.850 回答
2

您的“包含”函数没有右括号,需要正确引用。

如果 CHECKBOX 和 TEMPLATE 是字符串,试试这个:

driver.findElement(By.xpath("//input[@type='checkbox']/following-sibling:://td[contains(text(),'template')]"))

如果它们是变量,试试这个:

driver.findElement(By.xpath("//input[@type='" +checkbox+"']/following-sibling:://td[contains(text(),'"+template+"')]"))
于 2015-09-24T14:22:17.650 回答
0
"//input[@type="+"checkbox"+"]/following-sibling:://td[contains(text(),"+"template"+"]"

产生错误的字符串。从python尝试:

"//input[@type="+"checkbox"+"]/following-sibling:://td[contains(text(),"+"template"+"]"
'//input[@type=checkbox]/following-sibling:://td[contains(text(),template]'

您应该用引号将复选框和模板括起来以获取

"//input[@type="checkbox"]/following-sibling:://td[contains(text(),"template"]"

或者

"//input[@type='checkbox']/following-sibling:://td[contains(text(),'template']"

利用

"//input[@type="+"'checkbox'"+"]/following-sibling:://td[contains(text(),"+"'template'"+"]"

或者

"//input[@type='{type}']/following-sibling:://td[contains(text(),'{text}']".format(type='checkbox',text='template')
于 2014-05-14T23:39:15.663 回答