gpt4 book ai didi

java - Selenium 无法在 Iframe 中找到元素,即使它们可见

转载 作者:行者123 更新时间:2023-12-02 02:15:41 27 4
gpt4 key购买 nike

我一直在尝试创建代码来自动登录我玩的一款名为《Life is Feudal》的游戏的网站来收集一些信息(一切都是合法的,我已经手动访问了我想要的信息,但这需要数年时间才能完成)收集一切)。

这是我的代码:

    public static void main(String[] args) throws InterruptedException {

String Url = "https://lifeisfeudal.com/";
String email = "MYEMAIL";
String password = "MYPASSWORD";

WebDriver driver = setDriver();

// Open Life is feudal home page
driver.get(Url);

/*
* Logging into my account
*/

// Click on sign in button [WORK]
driver.findElement(By.linkText("Sign In")).click();

//Focus the Iframe
driver.switchTo().frame(driver.findElement(By.id("signin")));

/*
* Type in Email
*/

//Try #1 using name (DONT WORK)
driver.findElement(By.name("email")).sendKeys(email);
//Try #2 using xpath (DONT WORK)
driver.findElement(By.xpath("//*[@id=\"react-view\"]/div/div/div/div[2]/form/div[1]/div/input")).sendKeys(email);

/*
* Type in Password
*/

//Try #1 using name (DONT WORK)
driver.findElement(By.name("password")).sendKeys(password);

//Try #2 using xpath (DONT WORK)
driver.findElement(By.xpath("//*[@id=\"react-view\"]/div/div/div/div[2]/form/div[2]/div/input")).sendKeys(password);

/*
* Click the sign in button
*/

//Try (Havent tried it yet)
driver.findElement(By.linkText("Sign in")).click();


//Bring back to default
driver.switchTo().defaultContent();
//Rest of the code
}

这是 Iframe 内的 html 代码 HTML Iframe

编辑1:按照 Frank 的建议在切换框架后添加 thread.sleep(3000) 使其工作。

我认为它没有完全加载框架,并且正在尝试访问当时不存在的未完全加载的内容。

最佳答案

切换到 IFrame 后添加 Thread.Sleep(3000) 以确定是否是时间问题。如果是这样,请将 Thread.Sleep(3000) 替换为更强大的等待方式,例如显式等待。

关于java - Selenium 无法在 Iframe 中找到元素,即使它们可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337708/

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