gpt4 book ai didi

java - 无法在 iFrame 中找到元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:03 25 4
gpt4 key购买 nike

我正在尝试获取某个按钮/框架的 xpath。我能够使用 xpath 找到该元素,但在运行自动化时,我收到元素未找到异常。我尝试切换到特定框架,然后找到按钮,但它不起作用。附上页面和图像的链接。链接:https://www.msn.com/en-in/weather/today/New-Delhi,Delhi,India/we-city-28.608,77,201?iso=IN enter image description here

这是我尝试过的代码。

WebDriverWait wait = new WebDriverWait(cdriver,30);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='foot']//following::iframe[@style='width:9.7rem;']")));
System.out.println("Ive waited for the frame to load");
int size = cdriver.findElements(By.tagName("iframe")).size();
System.out.println(size);

/*for(int i=0; i<=size; i++){
cdriver.switchTo().frame(i);
System.out.println("Switched to frame "+i);
int total= cdriver.findElements(By.xpath("//*[@id='u_0_0']/div/button/span")).size();
System.out.println(total);
cdriver.switchTo().defaultContent();
}*/

cdriver.switchTo().frame(2);
System.out.println("Switched to frame");

cdriver.findElement(By.xpath("//*[@id='u_0_0']/div/button/span")).click();

获取当前帧的数量,然后检查每个元素的元素,但无法切换到该帧。

最佳答案

当您使用switchTo().frame(2)时你实际上切换到了第三个 <iframe> 。您可以使用switchTo().frame(1) ,但更好的选择是使用唯一标识符而不是索引

WebElement iframe = cdriver.findElement(By.csSelector("#fbcount > iframe"));
cdriver.switchTo().frame(iframe);

要等待帧加载,请使用 frameToBeAvailableAndSwitchToIt ,不是elementToBeClickable

wait.until(ExpectedConditions.elementToBeClickable(By.csSelector("#fbcount > iframe")));
System.out.println("Switched to frame");

关于java - 无法在 iFrame 中找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59294864/

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