Как щелкнуть элемент ng show с динамическим идентификатором с помощью селена

Как мне щелкнуть элемент ng show с динамическим идентификатором с использованием селена, элемент выглядит так, как показано ниже:

<i ng-show = "courseDetails.lmstype !='3rdParty' &amp;&amp; courseContentLevel.levelName != 'Pre-Requisite' &amp;&amp; courseContentLevel.levelName != 'End of Course'" class = "fa fa-plus-circle font-20 pointer-cursor margin-right-25" data-toggle = "dropdown" id = "dropdownMenu40282cf567bbb4d00167c117ccbb016b" ng-class = "{'margin-right-25' : courseContentLevel.levelName == 'Course Outcome'}"></i>
::before == $0
</i>

Здесь идентификатор постоянно меняется, поэтому я не могу полагаться на By.id, чтобы щелкнуть по нему. Если я планирую пойти после xpath, это тоже будет выглядеть так:

//*[@id = "dropdownMenu40282cf567bbb4d00167c117ccbb016b"]

это тоже основано на идентификаторе, который, я надеюсь, тоже бесполезен.

Пожалуйста, дайте здесь другой обходной путь ...

Заранее спасибо.

By.cssSelector () помог мне! Другие варианты игры с xpath, такие как «начинается с», «содержит» и т. д., У меня не работали.

a4aravind 19.12.2018 06:13

Если кто-то столкнется с таким же сценарием, ответ в моем случае: driver.findElement (By.cssSelector ("div.cb-sideBar: nth‌ -child (1)> div: nth-child (1)> ul: nth-child (2)> li: nth-child (1)> div: nth-child (1)> span: nth-child (3)> я: nth-child (1) ")). click ();

a4aravind 19.12.2018 06:14

Имейте в виду, что это может перестать работать, если структура HTML изменится. На мой взгляд, более точный способ найти этот веб-элемент будет примерно таким: driver.findElement (By.XPath ("// * [contains (local-name (), 'i') and contains (@ ng- show, 'courseDetails')] "))

Alichino 19.12.2018 13:45
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
3
67
0

Другие вопросы по теме