Как я могу создать локатор для элемента ниже для Selenium - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь создать Xpath для нажатия кнопки RadioButton. см. ниже элемент и xpath из Интернета:

Xpath:

/html/body/div[3]/div[2]/form/table/tbody/tr[5]/td[2]/label[1]/input

ЭЛЕМЕНТ:

<input type="radio" ng-model="dataRow[column.map]" name="optionsRadios" value="15" class="ng-pristine ng-valid">

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Предпочитают использовать селекторы CSS, а не xpath.

css = input.ng-нетронутый ng-valid
или же CSS = вход [имя = optionsRadios]

0 голосов
/ 13 ноября 2018

Элемент, с которым вы пытаетесь взаимодействовать (возможно, click()), является Angular элементом, поэтому вы должны заставить WebDriverWait для элемента быть активным и вы можете использовать любое из следующих (Java) решений:

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-pristine.ng-valid[name='optionsRadios'][ng-model*='column']"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-pristine ng-valid' and @name='optionsRadios'][contains(@ng-model,'column')]"))).click();
    
0 голосов
/ 09 ноября 2018

Если вы видите имя в теге, возможно, стоит начать с короткого ID.

//input[@name='optionsRadios']

Я бы предложил использовать вместо этого селектор CSS, потому что они быстрее, лучше поддерживаются, а синтаксис проще, понятнее.

input[name='optionsRadios']

Справочник по селекторам W3C

...