下拉有相同的名字

时间:2015-04-06 06:08:23

标签: selenium-webdriver

如果2下拉列表具有相同名称,如何选择下拉列表?我需要选择两个下拉列表。两个下拉列表具有相同的名称。下拉的Id是动态生成的。请帮忙。

1

<select id="trin" 
    class="ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse 
           ng-valid ng-valid-required ng-touched"
    ng-model="formData.agesOfChildren[nr]" 
    r-floating-label="Alder på barn" 
    tooltip="" r-min="1" 
    required="" only-digits="" 
    tabindex="0" name="agesOfChildren">

2

<select id="ywf1" 
   class="ng-scope ng-valid-r-min non-empty 
          ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched" 
   ng-model="formData.agesOfChildren[nr]" 
   r-floating-label="Alder på barn"
   tooltip="" r-min="1" 
   required="" only-digits="" 
   tabindex="0" name="agesOfChildren">

3 个答案:

答案 0 :(得分:0)

我相信有两个下拉列表,它们都具有相同的属性,并且会生成他们的ID。但是,xpath对他们来说会有所不同。

您必须检查浏览器中的下拉列表。执行以下操作:

  1. 右键点击Chrome中的每个下拉列表
  2. 选择检查元素
  3. 右键单击突出显示的代码,然后选择Copy Xpath OR CSSPath

答案 1 :(得分:0)

由于生成了ID,除了DOM结构外,还有很多方法可以将这些元素中的一个区分开来。

您可以查看可能选择的值并以此方式构建选择器,但如果它们相同/相似,则也无济于事。

使用DOM结构:

首选元素:

//select[@class="ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched"][1]

第二个选择元素:

//select[@class="ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched"][2]

我经常尝试避开DOM结构选择器,因为DOM可以通过javascript操作和更改的方式很多,但在这种情况下,除了联系开发人员并询问他们之外,确实没有其他选择。为每一个添加一个差异化的类。

答案 2 :(得分:-1)

试试这个Xpath

for Second Dropdown

//select[@class='ng-scope ng-valid-r-min non-empty 
      ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched'][1]

for First Drop Down

//select[@class='ng-scope ng-valid-r-min non-empty ng-dirty ng-valid-parse 
       ng-valid ng-valid-required ng-touched'][2]