虽然'名字'输入框在DOM中有带name属性的输入标记,我无法用通常的方式找到它。请提出建议!
当我说通常的方式时,像下面这样直接的东西不起作用:
driver.findElement(By.xpath("//input[@name='firstname']"));
driver.findElement(By.xpath("//input[@placeholder='First name']"))
答案 0 :(得分:0)
这是一个iframe,这意味着你必须先切换到iframe才能找到那里的元素。
这是未经测试但与此类似的东西
{{1}}
您可能还需要等待以允许iframe显示/加载。我注意到它需要一秒钟或2秒才能加载,所以如果你试图立即切换,你最终将无法找到iframe异常。
另请注意,在我的示例中,我使用“lightbox-registration-frame”来查找可能不一定正确的iframe。通常你想使用我没有看到的iframe的名称或id,所以你可能需要使用索引或其他方法来查找iframe。
答案 1 :(得分:0)
首先,您必须输入iframe,然后找到字段。尝试以下代码,它适合您:
WebDriver driver= new FirefoxDriver();
driver.get("https://sports.ladbrokes.com/en-gb/");
// click on the Join now button
driver.findElement(By.xpath(".//[@id='loginSubmit']/div[3]/button[2]")).click();
//find Locator of frame
WebElement frampath= driver.findElement(By.xpath(".//iframe[(@class='lightbox-registration-frame')]"));
//switch to frame for operations
driver.switchTo().frame(frampath);
driver.findElement(By.name("firstname")).sendKeys("fdf");
// more operations
//statement1 (operation you want to perform)
//statement2(operation you want to perform)
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Switch to main page
driver.switchTo().defaultContent();