2016-07-01 141 views
-2
<input type="text" id="mobile" name="mobile" placeholder="Mobile Number" maxlength="10" value="" onkeyup="javascript:dispLocMob(this);" onkeydown="javascript:dispLocMob(this);" onchange="javascript:dispLocMob(this);"> 

上面显示的是我试图发送密钥的元素。我尝试了xpath和id以及各种选择器,但它会抛出如下所示的错误:Selenium WebDriver:无法选择元素

无法找到元素:{“method”:“xpath”,“selector”:“/ html/body/div [3]/div/form/div [2]/div [1]/input“} 命令持续时间或超时:338毫秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html Build info:version:' 2.53.0',修订:'35ae25b',时间:'2016-03-15 16:57:40' 系统信息:host:'ClaimsCM8',ip:'192.168.110.118',os.name:'Windows 8 ',os.arch:'x86',os.version:'6.2',java.version:'1.7.0_51' ***元素信息:{Using = xpath,value =/html/body/div [3]/div/form/div [2]/div [1]/input} Sessi on ID:ec543fff-7116-4880-8c98-7c60a1c697d0 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver 功能[{platform = WINDOWS,acceptSslCerts = true,javascriptEnabled = true,cssSelectorsEnabled = true,databaseEnabled = true,browserName =本地方法(native方法)= firefox,handlesAlerts = true,nativeEvents = false,webStorageEnabled = true,rotate = false,locationContextEnabled = true,applicationCacheEnabled = true,takesScreenshot = true,version = 45.0.2}] ) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源) 在java.lang.reflect.Constructor.newInstance(未知来源) 在org.openqa.selenium。 remote.ErrorHandler.createThrowable(ERR orHandler.java:206) 在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678) 在有机openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363) 在org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:500) 在org.openqa.selenium.By $ ByXPath.findElement( By.java:361) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355) at Selenium.Test2.main(Test2.java:62) 由org.openqa.selenium引起。 NoSuchElementException:无法找到元素:{“method”:“xpath”,“selector”:“/ html/body/div [3]/div/form/div [2]/div [1]/input”} F或有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:'2.53.0',修订:'35ae25b',时间:'2016-03-15 16:57:40' 系统信息:主机:'ClaimsCM8 ',ip:'192.168.110.118',os.name:'Windows 8',os.arch:'x86',os.version:'6.2',java.version:'1.7.0_51' 驱动程序信息:驱动程序。版本:未知 位于.FirefoxDriver.prototype.findElementInternal_(file:/// C:/Users/EFERNA~1/AppData/Local/Temp/anonymous4369679942726534324webdriver-profile/extensions/[email protected]/components/driver-component。 js:10770) at .FirefoxDriver.prototype.findElement(file:/// C:/Users/EFERNA~1/AppData/Local/Temp/anonymous4369679942726534324webdriver-profile/extensions/[email protected]/components/driver-component .js:10779) at .DelayedCommand.prototype.executeInternal_/h(file:/// C:/ Us ers/EFERNA~1/AppData/Local/Temp/anonymous4369679942726534324webdriver-profile/extensions/[email protected]/components/command-processor.js:12661) at .DelayedCommand.prototype.executeInternal_(file:/// C: /Users/EFERNA~1/AppData/Local/Temp/anonymous4369679942726534324webdriver-profile/extensions/[email protected]/components/command-processor.js:12666) at .DelayedCommand.prototype.execute/<(file:// /C:/Users/EFERNA~1/AppData/Local/Temp/anonymous4369679942726534324webdriver-profile/extensions/[email protected]/components/command-processor。js:12608)

Web元素中是否存在某些不允许我访问我的Selenium脚本中的元素的内容? 任何建议/意见将不胜感激。 谢谢!

+1

最有可能的元素不是在页面上可见的或别的东西覆盖它。验证元素是否可见。 –

+2

显示您尝试的代码 – Andersson

+1

请确保这不在任何框架内.... –

回答

0

尝试如下: -

WebDriverWait wait = new WebDriverWait(driver, 10); 
el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("mobile"))); 
el.sendKeys("your value"); 

注意: - finding element之前确保它不属于任何frameiframe内。如果它是任何frameiframe你需要切换内部的frame第一为: - driver.switchTo().frame("frame name or id")

希望它会帮助你... :)

+0

我也厌倦了,但仍然没有帮助。 –

+0

确保此元素不在任何框架内。 –

0

首先,如果你使用的XPath然后使用相关的XPath而不是绝对的,因为DOM中的细微变化会导致绝对xpath无效或引用错误的元素。

第二次尝试使用.click();之前.sendkeys();.所以,你的代码可以是这样的

WebElement ele = dvr.findElement(By.id("mobile")); 
ele.click(); 
ele.sendKeys("your string"); 

最后,确保你没有在页面上的任何重复的元素与相同的属性,即ID ==“移动”。希望这有助于

0

请尝试以下代码:

  1. 如果元素不在任何框架:

    driver.findElement(By.id("mobile")).sendKeys("");

  2. 如果该元素是一个框架:

    // Switching to the frame

    driver.switchTo().frame(<framename>);

    driver.findElement(By.id("mobile")).sendKeys("");

    driver.switchTo().defaultContent();

另外,请启动页面,并输入文本后添加一些等待。而且即使代码不能正常工作,请检查元素是否可见或不使用下面的代码:

if(driver.findElement(By.id("mobile")).isDisplayed()) { 
    // Add the code given above 
} 

希望这有助于

相关问题