У меня есть следующий HTMLПолучение всех элементов определенного класса плюс навигацию назад и вперед с CodedUI
`<table id="tableRepeat44" class="scaledTableGroup">
<tbody>
<tr>
<tr class="grpTableRegRow">
<td class="borderCell" title="Strongly Disagree">
<input id="QID16108TAG1" value="1" name="QID16108TAG" type="radio">
<td class="borderCell" title="Disagree">
<input id="QID16108TAG2" value="2" name="QID16108TAG" type="radio">
<td class="borderCell" title="Somewhat Disagree">
<input id="QID16108TAG3" value="3" name="QID16108TAG" type="radio">
<td class="borderCell" title="Somewhat Agree">
<input id="QID16108TAG4" value="4" name="QID16108TAG" type="radio">
<td class="borderCell" title="Agree">
<input id="QID16108TAG5" value="5" name="QID16108TAG" type="radio">
<td class="borderCell" title="Strongly Agree">
<input id="QID16108TAG6" value="6" name="QID16108TAG" type="radio">
<td class="questionColumn">
<span id="lblsubq16108_7" class="Answer">This is a question. </span>
</td>
</tr>
<tr class="grpTableAltRow">
<tr class="grpTableRegRow">
<tr class="grpTableAltRow">
</tbody>
</table>`
Каждая строка содержит один и тот же синтаксис, что и расширенную первую строку. То, что я хочу сделать через CodedUI, - это получить текст всех вопросов (например, td: nth-of-type (7)> span || class = "Answer"), а затем перейти к родительской строке, чтобы я можете получить доступ к кнопке переключателя «Согласен/Не согласен» и сделать выбор, основанный на переданном параметре.
Я попытался вариации
HtmlCustom questionsTable = new HtmlCustom(browser);
HtmlControl controls = new HtmlControl(questionsTable);
if (howToAnswer.Trim().ToLower() == "correct")
{
questionsTable.SearchProperties[HtmlCustom.PropertyNames.TagName] = "Tbody";
controls.SearchProperties.Add(HtmlControl.PropertyNames.Class, "Answer");
UITestControlCollection collection = controls.FindMatchingControls();
foreach (UITestControl answers in collection)
{
Debug.Write(answers);
}
}
И это привело к ControlType [Pane] ClassName [HtmlPane] TagName [SPAN], UniqueIdentifier [154] Id [lblsubq16172_7] Name []
для каждой строки в таблице. Так что я был близок, но мне не удалось выяснить, как получить текст для .InnerText
, недоступен на answers
.
И последний элемент для адреса будет состоять в том, как перемещаться вперед и назад, сохраняя ссылку на эту конкретную строку?
Решил проблему с текстом, выполнив следующие ответы «HtmlSpan theAnswer = (HtmlSpan); Debug.WriteLine (theAnswer.InnerText); 'Но я все еще немного теряюсь в том, как перемещаться внутри элемента и из него, сохраняя его ссылку. –