Как создать динамический xpath, у которого есть только стили без класса или идентификатора - PullRequest
0 голосов
/ 25 сентября 2019

Как я могу создать динамический XPath для этого элемента, здесь нет ни класса, ни идентификатора, а просто встроенный CSS.И мне нужно увеличить число div тоже, как это

<div role="none" style="position: relative; display: flex; flex-direction: row; flex-grow: 1; flex-shrink: 1; overflow: hidden; align-items: center; border-radius: 0px; cursor: pointer; padding: 4px 10px; background-color: rgba(0, 0, 0, 0); min-height: 55px;"><div role="none" style="position: relative; display: flex; flex-direction: row; flex-grow: 1; flex-shrink: 1; overflow: hidden; align-items: center; background-color: rgba(0, 0, 0, 0);"><div role="none" aria-hidden="true" style="position: relative; display: flex; flex-direction: column; flex-grow: 0; flex-shrink: 0; overflow: visible; align-items: stretch; width: 40px; height: 40px; justify-content: center;"><div role="none" style="position: absolute; display: flex; flex-direction: column; flex-grow: 0; flex-shrink: 0; overflow: hidden; align-items: center; left: 0px; right: 0px; top: 0px; bottom: 0px; justify-content: center;"><div role="none" style="position: relative; display: flex; flex-direction: row; flex-grow: 0; flex-shrink: 0; overflow: hidden; align-items: center; background-color: rgb(229, 228, 232); width: 40px; height: 40px; border-radius: 20px; justify-content: center;"
/html/body/div[1]/div/div[1]/div[2]/div/div[1]/div/div[1]/div[4]/div[2]/div/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/div

/html/body/div[1]/div/div[1]/div[2]/div/div[1]/div/div[1]/div[4]/div[2]/div/div[2]/div/div/div[1]/div/div/div[1]/div[3]/div/div

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Попробуйте создать отформатированную строку и просто вставьте в нее то, что вы хотите

string searchvalue = "position: relative; or whatever"
Driver.FindElement(By.XPath(string.Format(".//div[contains(@style,'{0}')]", searchvalue)));
0 голосов
/ 25 сентября 2019

В DOM вы можете найти любого из родителей, который имеет идентификатор / имя класса.'тогда вы можете перейти с родителем-потомком.

Формат: // tagname [@ locator =' locatorvalue ']

Используйте вышеприведенный формат для родителя, который имеет идентификатор или классзатем перейдите к соответствующему дочернему элементу

// tagname [@ locator = 'locatorvalue'] / childtagename1 / childtagename2

или

// tagname [@ locator = 'locatorvalue«] // childtagename5

...