id&每次WebDriver运行时名称都会更改

时间:2014-01-10 10:58:30

标签: selenium-webdriver

我正在编写一个Java WebDriver代码,用于从way2sms.com发送短信,但我没有在框中插入移动设备。

下面是我试图在文本框中插入任何no的页面的一小部分,我已经尝试className(), cssSelector(), id(), name();但没有任何工作。实际上,每次运行我的WebDriver程序时,问题都是id="tQTSajQW"name="tQTSajQW"

<p id="p1">
    <input id="textfield2" class="inp" type="text" style="width:30px; color:#333; background: #e0e0e0;" name="textfield2" value="+91" readonly="readonly">
    <input id="tQTSajQW" class="inp" type="text" value="" onchange="javascript:dispLocMob(this);" onkeydown="javascript:dispLocMob(this);" onkeyup="javascript:dispLocMob(this);" maxlength="10" onblur="if(this.value==""){ this.placeholder="Mobile Number";this.style.color="#293f46;"}" placeholder="Mobile Number" name="tQTSajQW" style="">
    <img id="locMob" alt="Find Mobile Location" src="http://sc1.way2sms.com/w2sv5/images/locate-mobile.gif" style="cursor: pointer; visibility: hidden; position: absolute; top: 86px; left: 240px;" onclick="javascript:locateMob();">
</p>

除了上述方法之外,我们有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

将CSS选择器或xPath表达式绑定到有问题的元素周围的其他元素。

例如:

driver.findElement(By.xpath("//p[@id='p1']/input[2]"));

如果页面有更多更改,那么只需获取<p>的子项并将其循环:

WebElement paragraph = driver.findElement(By.id("p1"));
List<WebElement> inputs = paragraph.findElements(By.tagName("input"));

for (WebElement input : inputs) {
  if ("Mobile Number".equals(input.getAttribute("placeholder"))) {
    // do your tricks
  }
}