0

我一直在尝试在JavaScript中编写一个Selenium脚本,它将填写我的网站上的'email'字段,但它一直告诉我“元素不是发现” ......<Selenium WebDriver JS>无法找到元素和隐含的等待问题

我试图找到这个元素:

<input type="email" placeholder="Email" name="email" class="form-control sweep" data-radium="true" data-reactid=".btcvpfkiyo.0.$/=10=22.0.0.$=12.0.0.0.$=10.$=11.0.$/=10.$=10.0" disabled=""> 

首先,我去的网页,然后我等了几秒钟之前,我试图找到元素:

driver.get('www.mysite.com').then(function() { 
driver.manage().timeouts().implicitlyWait(10000); 
driver.findElement({name:'email'}) 
    .then(function(present) { 
     if (present) { 
      console.log("Found"); 
     } 
    }); 
}); 

我试过访问这个在许多方面元素......这是我已经试过:

driver.findElement(By.xpath("//input[@name='email']")) 
driver.findElement(By.css("input[type='email']")) 
driver.findElement(By.css("input[name='email']")) 
driver.findElement({name:'email'}) 

每这些人给我同样的错误:no such element

什么奇怪的是,当我使用jQuery选择使用JS元素工具,它立即找到元素。每一个命令上面jQuery的测试工作

我想错误可能是其中之一:

  • 也许我隐等待不工作(它等待10秒,但我 不知道它是否试图立即找到该元素)。我也试过implicitlyWait(10000).then但也许我没有错
  • 也许我的选择是错误的

环境

+0

可能有'帧/ iframe'目前,需要验证它,如果需要的话元件内部存在在找到元素之前需要切换的任何“frame/iframe”。谢谢 –

回答

1

正如你已经尝试了所有可能的方式来寻找元素,但你没有找frame/iframe

有可能存在任何frame/iframe内所需的元素。

如果frame/iframe存在你需要frame/iframe使用WebDriver#switchTo()切换如下找到期望的元素之前: -

driver.switchTo().frame("frame/iframe id or name") 

//Now find desire element inside frame/iframe 

//After doing all stuff inside frame/iframe switch back to default content 
driver.switchTo().defaultContent() 
相关问题