如何通过部分onclick属性在值中加上单引号来定位元素?

问题描述 投票:0回答:2
<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.'
c# selenium selenium-webdriver xpath
2个回答
1
投票

[onclick值附近使用转义的双引号

FindElement(By.XPath("//div[starts-with(@onclick, \"select_menu('1'\")]");

0
投票

此错误消息...

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时,('字符是语法的一部分。因此,您需要排除它们或将它们转义。


解决方案

要通过部分onclick事件属性来定位元素,可以使用以下基于Locator Strategiesxpath

  • 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');\"]"));
    
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.