Как найти элемент по частичному атрибуту onclick с одинарной кавычкой в ​​значении? - PullRequest
0 голосов
/ 12 марта 2020
<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.'

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Используйте экранированные двойные кавычки вокруг значения onclick

FindElement(By.XPath("//div[starts-with(@onclick, \"select_menu('1'\")]");
0 голосов
/ 13 марта 2020

Это сообщение об ошибке ...

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 , вы можете использовать следующий 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');\"]"));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...