Xpath中的Webelement标识

时间:2014-02-09 17:16:42

标签: xpath selenium-webdriver

我正在处理xpath,我对此有疑问。下面是获取文本框输入的相关html代码:

<div id="formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id_wrapper" 
     class="fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id ">
  <label id="formId:lbl_SHIPPING_ADDRESS__PHONE_PRIMARY_id" style="" 
         for="formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id">
  **<input id="formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id" type="text" maxlength="20" 
           value="" name="formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id"/>**
  <span id="formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id_msg"/>
</div>

我把Xpath写成

 driver.findElement(
     By.xpath("//input[@id = 'formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id')]"))
.sendKeys("test");

这是html中唯一匹配的节点,当我运行它时,我收到以下错误

  

线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法定位元素:{“method”:“xpath”,“selector”:“// input [@id ='formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id']” }   命令持续时间或超时:104.80秒   有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html

请帮忙!

2 个答案:

答案 0 :(得分:0)

您可以先修复代码中的以下问题:

  1. 使用相应的<label>代码关闭</label>代码。

  2. 删除@id =字符串中的两个空格。

  3. 如果以上内容解决了您获得的NoSuchElementException,那么您可能还需要将.sendKeys("test")扩展到.sendKeys("test").submit(),以便完成此问题。

答案 1 :(得分:0)

我刚检查了您的源代码,发现您的输入框包含在一个框架中。

使用以下代码: -

//switch to the frame
driver.switchTo().frame("envoy");   

//get the phone number field and enter data 
driver.findElement(By.id("formId:fld_SHIPPING_ADDRESS__PHONE_PRIMARY_id")).sendKeys("");

在上面的代码中我使用了id作为定位器。我建议你在xpath上使用name或id。您正在测试的Web应用程序使用正确的ID和名称标签进行了精美编码!!

请告诉我这是否对您有用。