处理具有更改ID的元素

时间:2015-02-19 04:49:45

标签: java selenium selenium-webdriver

我正在运行脚本来自动化测试用例,并发现id不断变化。下面是我的HTML代码 用于试驾的萤火虫:

<button class="G0036HC-b-a G0036HC-b-o G0036HC-b-g" id="gwt-uid-470" tabindex="0" aria-labelledby="gwt-uid-470" role="button" type="button"><div class="G0036HC-b-j">Click to continue</div></button>

检查器:

<button class="G0036HC-b-a G0036HC-b-o G0036HC-b-g" id="gwt-uid-320" tabindex="0" aria-labelledby="gwt-uid-320" role="button" type="button"><div class="G0036HC-b-j">Click to continue</div></button>

仅限ID更改。 任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

您可以按xpath获取该元素,并检查id属性是否以gwt-uid- 开头:

//button[starts-with(@id, "gwt-uid-")]

答案 1 :(得分:1)

此外,答案@alecxe建议我也建议您尝试使用基于文本的xpath搜索。我经常遇到等待问题所以也建议使用explicit等待这个。

// //div[.='Click to continue']/..
By byXpath = By.xpath("//div[.='Click to continue']");

WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(byXpath));
//    myDynamicElement.click();

答案 2 :(得分:0)

考虑到以下观察,以下代码应该可以正常工作。

  • 页面上的所有按钮都以 gwt-uid - 为前缀,后缀号码更改
  • 如果页面上的按钮有唯一的文字,请使用

By.xpath(&#34; // button / div [text()=&#39;点击继续&#39;]&#34;)

  • 如果有多个按钮具有相同的文本,则使用索引。例如。然后使用两个具有相同文本的关闭按钮,

By.xpath(&#34;(// button / div [text()=&#39; Close&#39;])[2]&#34;)#为第二次出现,请注意硒是不是零索引

答案 3 :(得分:0)

使用跟随 ... //输入[@id =””] /以下::输入[1]

您可以使用前面的以相同的方式识别子节点