gpt4 book ai didi

java - 无法使用 CSS 选择器在模式窗口中提取密码字段 - Selenium Java

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:40 26 4
gpt4 key购买 nike

我可以单击起始页中的登录链接 [链接] http://imgur.com ,结果是用户名和密码字段的模态窗口。当我尝试在结果页面上提取密码字段时,发现没有用户名和密码字段的元素。即使我当时使用 driver.getPageSource(); 检查了源代码 并且没有用户名或密码元素的迹象。以下是用于从指定 URL 中提取密码字段的代码。

pwd = driver.findElement(By.cssSelector("input[type='password']"));  

点击模态窗口的代码是

driver.findElement(By.partialLinkText("sign in")).click(); 

后来我发现他们使用 iframe,所以我开始搜索每个 iframe 中的密码字段,如下所示。

  List<WebElement> iFrames = null;
WebElement iFramePwd=null;

iFrames = driver.findElements(By.tagName("iframe"));
if (iFrames.size() > 0) {
for (int l = 0; l < iFrames.size(); l++) {
try{ driver.switchTo().frame(l);

}
catch(NoSuchFrameException ljn){
System.out.println(ljn);
driver.switchTo().defaultContent();
continue;
}
try {
try{
iFramePwd = driver.findElement(By.cssSelector("input[type='password']"));
}
catch(NoSuchElementException lkn){
System.out.println(lkn);
driver.switchTo().defaultContent();
continue;
}

iframe 的大小显示为 5,但当我尝试切换到 iFrame 时,我总是收到 NoSuchFrameException。请访问指定的URL来分析源代码。我不知道我在哪里错过了重点。有没有办法从模式窗口获取密码字段。任何帮助将不胜感激。提前致谢

最佳答案

试试这个代码

WebDriver driver = new FirefoxDriver();
driver.get("http://imgur.com/");
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.findElement(By.partialLinkText("sign in")).click();
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.className("cboxIframe")));

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("f")));
driver.findElement(By.name("username")).sendKeys("abcd");
driver.findElement(By.xpath(".//*[@id='password']/input")).sendKeys("abcd");

driver.close();
driver.quit();

如果我们使用循环来到达 iframe,就会出现问题。您不知道自己位于哪个 iframe 中,因为 Web 元素列表无法授予页面中 iframe 的确切顺序。例如,下面的代码不起作用并显示错误“元素属于与当前框架不同的框架 - 切换到其包含框架以使用它”

List<WebElement> my_iframes = driver.findElements(By.tagName("iframe"));
// moving to inner iframe
if(my_iframes.size() > 0){
for(WebElement my_iframe : my_iframes){
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(my_iframe));
}
}
driver.findElement(By.name("username")).sendKeys("abcd");
driver.findElement(By.xpath(".//*[@id='password']/input")).sendKeys("abcd");

关于java - 无法使用 CSS 选择器在模式窗口中提取密码字段 - Selenium Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com