Это более сложный и интригующий вопрос, чем вы могли бы предположить.Важно помнить, что значения атрибута HTML class
не являются уникальными .Таким образом, вполне возможно (и на самом деле вероятно), что ваша HTML-страница может иметь несколько элементов с классом, установленным в «class1».Поэтому выбор строго по классу будет работать только в том случае, если ваша радио-кнопка - это элемент first на вашей веб-странице с этим значением класса.Работая только с вашим примером, более безопасное выражение локатора будет
selenium.GetAttribute("css=input.class1[type='radio']@id");
Это соответствует только элементам class1, которые являются переключателями.Он гораздо более конкретен - он правильно избегает предыдущих элементов, которые также имеют значение class1 для атрибута class.Но это все еще неудовлетворительно - снова оно будет соответствовать первому такому элементу.Вы можете улучшать дальше, если, например, у вас есть более одной группы переключателей.Скажем, вы хотели первую радиокнопку в второй группе из этого фрагмента кода ...
<div id='group1'>
<input type="radio" class="class1" id="radio1" />
...
</div>
<div id='group2'>
<input type="radio" class="class1" id="radio1" />
...
</div>
... вы можете использовать локатор так:
selenium.GetAttribute("css=#group2 .class1[type='radio']@id");
(Обратите внимание, что пробел после '# group2' важен!)
Однако вышеизложенное в основном объясняет проблему, а не дает хороший ответ, поскольку фундаментальная проблема остается.
Скорее всего, ваш код действительно выглядит примерно так: несколько переключателей имеют одинаковый тип и класс и различаются только по позиции:
<input type="radio" class="class1" id="radio1" />
<input type="radio" class="class1" id="radio2" />
<input type="radio" class="class1" id="radio3" />
Единственный способцель, отличная от первой, - явное индексирование, , но для этого необходимо, чтобы вы знали индекс априори , например:
selenium.GetAttribute("css=#group2 [type='radio']:nth-child(2)@id");
(Подробнее о создании рецептов CSS)см. мою статью и настенную диаграмму XPath, CSS, DOM и Selenium: Rosetta Stone на Simple-Talk.com.)