Как я могу создать локатор для элемента ниже для Selenium

Я пытаюсь создать 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 ответа

Элемент, с которым вы пытаетесь взаимодействовать (возможно, click()) является угловым элементом, поэтому вам нужно активировать 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();
    

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

css = input.ng-нетронутый ng-valid
или css=input[name=optionsRadios]

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

//input[@name='optionsRadios']

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

input[name='optionsRadios']

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

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