<div style="padding: 4px 15px; background-color: rgb(212, 208, 200); color: rgb(0, 0, 0);" onmouseover="hl(this,true);" onmouseout="hl(this,false);" onclick="select_menu('1','doc_107094');">Download...</div></div>
我正在尝试点击onclick
事件并进行匹配,直到select_menu('1'使用代码
FindElement(By.XPath("//div[starts-with(@onclick 'select_menu('1'')]"));
和我的错误
OpenQA.Selenium.InvalidSelectorException: 'Given xpath expression "//div[starts-with(@onclick 'select_menu('1'')]" is invalid: SyntaxError: The expression is not a legal expression.'
[onclick
值附近使用转义的双引号
FindElement(By.XPath("//div[starts-with(@onclick, \"select_menu('1'\")]");
此错误消息...
OpenQA.Selenium.InvalidSelectorException: 'Given xpath expression "//div[starts-with(@onclick 'select_menu('1'')]" is invalid: SyntaxError: The expression is not a legal expression.'
...表示xpath表达式不是有效的表达式。
[当处理xpath时,(
和'
字符是xpath语法的一部分。因此,您需要排除它们或将它们转义。
要通过部分onclick事件属性来定位元素,可以使用以下基于Locator Strategies的xpath:
xpath使用starts-with()
:
FindElement(By.XPath("//div[starts-with(@onclick, 'select_menu')]"));
xpath使用starts-with()
和contains()
:
FindElement(By.XPath("//div[starts-with(@onclick, 'select_menu') and contains(@onclick, 'doc')]"));
xpath使用onclick事件中的整个值:
FindElement(By.XPath("//div[@onclick=\"select_menu('1','doc_107094');\"]"));