首页 > 解决方案 > XPath:有没有办法选择动态添加的兄弟的子元素

问题描述

我需要触摸兄弟元素的子元素:'input':“ng-form”,它是在前一个兄弟的子元素:“input”被触摸时动态创建的

我想根据我需要的字符串数组数据选择并触摸兄弟的输入元素。因为兄弟姐妹被添加为以前的兄弟姐妹孩子:输入被触摸

目前这是我的 html 表单

<ng-form name="streamValueForm>
    <input name="name" class="ng-touched ng-valid"/>
</ng-form>

<ng-form name="streamValueForm>
    <input name="name" class="ng-untouched ng-invalid"/>
</ng-form>

这是我想做的

string[] values = { "dummy1", "dummy2", "dummy3" };

for( int i=0; i < values.Length; i++)
{
    IWebElement set_values = m_driver.FindElement(By.XPath("//ng-form[@name='streamValueForm']/following-sibling::*//input[contains(@class,'ng-untouched')]"));
    set_values.Click();
    set_values.SendKeys(values[i]);
    System.Threading.Thread.Sleep(5000);
}

当我触摸输入元素即 ng-form 的子元素时,兄弟姐妹不断添加 ng-form

标签: c#seleniumselenium-webdriverxpath

解决方案


如果要选择输入字段ng-untouched ng-invalid

您可以使用这个 css 选择器:

ng-form[value='streamValueForm'] input[class*='ng-invalid']  

Xpath 将是:

//ng-form[@value='streamValueForm']/input[contains(@class,'ng-invalid')]

推荐阅读