好的,所以我确实做了我的研究,但无法找到问题的答案。使用Selenium Webdriver并在网页上有一个项目列表,下面是一个示例HTML
<div class="color-picker-slider" style="width: 180px;" active_state="black">
<div class="store_color_picker black-selector" style="width:20px;" color_name="black" product_id="132" base_color="black"></div>
<div class="store_color_picker slate-selector" style="width:20px;" color_name="slate" product_id="133" base_color="slate"></div>
<div class="store_color_picker violet-selector" style="width:20px;" color_name="violet" product_id="157" base_color="violet"></div>
<div class="store_color_picker flexlime-selector" style="width:20px;" color_name="lime" product_id="155" base_color="lime"></div>
<div class="store_color_picker pink-selector" style="width:20px;" color_name="pink" product_id="156" base_color="pink"></div>
<div class="store_color_picker teal-selector" style="width:20px;" color_name="teal" product_id="158" base_color="teal"></div>
<div class="store_color_picker tangerine-selector" style="width:20px;" color_name="tangerine" product_id="159" base_color="tangerine"></div>
<div class="store_color_picker navy-selector" style="width:20px;" color_name="navy" product_id="160" base_color="navy"></div>
<div class="store_color_picker red-selector" style="width:20px;" color_name="red" product_id="161" base_color="red"></div>
</div>
所以我创建了一个枚举,其中包含了所有带有它的索引位置编号的产品。这很有效,但唯一的问题是如果索引发生变化,让我们说添加一个不添加到最后一个索引的新项目,那么我必须去改变每个索引,因此效率不高。我看到的唯一静态属性是product_id,它不太可能改变。如果添加了新的product_id,我只需将其添加到枚举中,而无需更改任何索引等。
我的问题是如何根据product_id点击元素?我知道如何获取属性,但当然返回一个字符串但不知何故我想根据product_id点击该项目。任何帮助将不胜感激!我顺便使用CSS来查找元素。这不是任何下拉列表的一部分
答案 0 :(得分:0)
您可以根据其属性编写CSS选择器:
.store_color_picker[product_id='133']
基本上,格式为:
selector[attribute='attribute_value']
因此,您也可以这样做:
.store_color_picker[color_name='black']
如果您想按颜色名称选择。
答案 1 :(得分:0)
在Ruby Selenium(接近Java版本)中:
driver.find_element(:css, ".store_color_picker[product_id='133']")
在这里highly detailed documentation about css selectors,你可以在其他地方找到一些更容易被吸收的版本。