执行测试脚本时观察到以下错误。有人可以帮助我找出失败的原因。
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"lid"}
Command duration or timeout: 20.45 seconds
以下是我的代码片段。请注意,元素存在于同一帧中,因此不需要帧切换。
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
//import org.openqa.selenium.support.ui.ExpectedConditions;
//import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
public class LoginPage
{
@Test
public void testLoginFail()
{
WebDriver driver = new FirefoxDriver();
driver.get("https://www.zoho.com/crm/");
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
driver.findElement(By.linkText("LOGIN")).click();
//WebDriverWait wait = new WebDriverWait(driver,40);
//wait.until(ExpectedConditions.visibilityOfElementLocated((By.id("lid"))));
driver.findElement(By.id("lid")).sendKeys("xyz@gmail.com");
元素的HTML视图是:
<input name="lid" id="lid" class="input usrbx" value="" onkeypress="clearmsg()" type="email">
答案 0 :(得分:0)
我已经检查了网页&#34; https://www.zoho.com/crm/lp/login.html&#34;我能够在其中看到一个iframe,输入文本框在其中。以下是工作代码。
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\Selenium\\Web Drivers\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://www.zoho.com/crm/");
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
driver.findElement(By.linkText("LOGIN")).click();
//Switch to the frame
driver.switchTo().frame(0);
driver.findElement(By.id("lid")).sendKeys("xyz@gmail.com");
driver.quit();
}
希望这会对你有所帮助。感谢。
答案 1 :(得分:0)
以下是您的问题的答案:
关于解决方案的几句话:
System.setProperty
提供geckodriver的绝对路径。implicitlyWait
根据最近的更新implicitlyWait
可能很快就会死亡。NoSuchElementException
说明了一切。元素的id
不可跟踪。lid
的元素位于iframe中,因此您需要先切换到第一帧。这是您自己的代码,其中包含一些简单的调整:
@Test
public void testLoginFail()
{
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.zoho.com/crm/");
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
driver.findElement(By.linkText("LOGIN")).click();
driver.switchTo().frame("zohoiam");
driver.findElement(By.xpath("//input[@id='lid']")).sendKeys("xyz@gmail.com");
}
如果这回答你的问题,请告诉我。