Как я могу создать локатор для элемента ниже для 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']