我想在我的网页中找到一个元素,这是我输入名称的文本字段。 所以元素是:
<input type="text" id="a110_name" name="name" maxlength="255">
第一次,我的测试效果很好。 如果我添加一个循环再次单击该元素,则找不到selenium,因为id已更改。
例如:每次点击它时,ID都会改变。
<input type="text" id="a110_name" name="name" maxlength="255">
<input type="text" id="a120_name" name="name" maxlength="255">
我的代码:
driver.findElement(By.id("a110_name")).sendKeys("test");
如何解决此问题?
答案 0 :(得分:2)
很高兴听到您使用XPATH解决了它。您可以使用CSS定位器解决此问题,如下所示:
driver.findElement(By.cssSelector("input[id$='_name']"));
我们必须谨慎使用XPATH的“contains”关键字,在某些情况下它可能与其他一些元素匹配。如果你更舒服XPATH,最好使用//input[ends-with(@id,'_name')]
答案 1 :(得分:1)
通过包含文字识别元素
如果动态元素具有明确的模式,那么我们也可以在元素定位器中使用“start-with”或“contains”等JavaScript函数来将定位器的动态部分与静态部分分开。
例如,在您提供的Id示例的情况下,我们可以使用'contains'函数来访问此定位器,而不管其动态部分。
XPath://输入[contains(@ id,'_ name')]
答案 2 :(得分:0)
使用CSS,这也可以:RangeReplaceableCollection
这意味着:如果它包含'_name'