Xpath中的Webelement标识

Xpath中的Webelement标识,xpath,selenium-webdriver,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="" fo

我正在研究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>
这是html中唯一匹配的节点,当我运行它时,我得到以下错误

线程“main”org.openqa.selenium.NoSuchElementException中的异常:无法定位元素:{“方法”:“xpath”,“选择器”:“//input[@id='formId:fld\u SHIPPING\u ADDRESS\u PHONE\u PRIMARY\u id']” 命令持续时间或超时:104.80秒 有关此错误的文档,请访问:


同样的,请帮忙

您可以从修复代码中的以下问题开始:

  • 用相应的
    标记关闭
    标记

  • 删除
    @id=
    字符串中的两个空格


  • 如果以上解决了您遇到的
    NoSuchElementException
    ,那么您可能还需要将
    .sendKeys(“test”)
    扩展到
    .sendKeys(“test”).submit()
    ,以完成此问题。

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

    使用以下代码:-

    //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上使用名称或id。您正在测试的web应用程序使用正确的id和名称标记进行了漂亮的编码


    让我知道这是否对您有用。

    我做了所需的更改,即使在运行后也会收到相同的错误消息。您可以发布您尝试自动执行的网页的URL吗?-单击“签出”后,您将被重定向到签出页面,在该页面中,我试图输入“主要电话号码”的值,但没有此类选项
    checkout
    .switchTo().frame(“特使”);为我工作。非常感谢你的宝贵意见
    //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("");