如何使用Selenium标识选定项的Web元素,以动态更改名称和ID

时间:2019-02-08 09:22:06

标签: java selenium selenium-webdriver xpath automation

<div class="col-xs-6 form-field input_controls">
<select name="ni.VE402765a6db1fef4043fb7d668c961997" id="ni.VE402765a6db1fef4043fb7d668c961997" class="form-control cat_item_option" onchange="if (typeof(variableOnChange) == 'function') variableOnChange('ni.VE402765a6db1fef4043fb7d668c961997')" aria-readonly="false" aria-required="true"><option value="" selected="SELECTED">-- None --</option><option value="Yes">Yes</option></select>
<input type="HIDDEN" class="cat_item_option" name="sys_original.ni.VE402765a6db1fef4043fb7d668c961997" id="sys_original.ni.VE402765a6db1fef4043fb7d668c961997" value=""></div>

以上是“ SelectBox”的DIV类。每个“ SelectBox”的数字都在变化。我不想硬编码ID或名称,我需要一种方法来分别标识每个SelectBox。 除数字外,所有“ SelectBox”都具有相同的名称和ID。

2 个答案:

答案 0 :(得分:1)

请使用select标记的类。它应该可以工作。我尝试使用python代码。如果使用的是Java Xpath,请保持不变。

select=Select(driver.find_element_by_xpath("(//select[@class='form-control cat_item_option'])[n]"))
select.select_by_value('Yes')

其中n = 1.2..n

如果要搜索第1个元素,则将1插入n 让我知道这是否对您有用。

答案 1 :(得分:0)

如果没有唯一的标识符,则必须尝试将其与周围的元素固定在一起,并可能依赖于包含元素的子元素的固定序号。

有关详情,请参见Get Nth child of a node using xpath