我试图在包含框架的网站上找到一个元素(包含“791”)(但该元素位于顶部窗口中)。由于某种原因,Selenium 找不到该元素。找到它的正确方法是什么? 谢谢!
public class StarOnline {
static WebDriver driver;
static String baseUrl;
public static void main(String[] args) throws InterruptedException {
baseUrl = "https://www.staronline.org.uk/demo_register.asp";
System.setProperty("webdriver.chrome.driver", "C:\\Automation\\libs\\Drivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(baseUrl);
List<WebElement> checkbox = driver.findElements(By.className(".frm"));
System.out.println("list size = " + checkbox.size());
for (WebElement ell:checkbox)
{
if (ell.getText().contains("791"))
ell.click();
else System.out.println("Element not found");
break;
}
最佳答案
这不是这个问题的直接答案,而只是一种方法。我们需要使用 switchToFrame 方法。
如果您需要切换到当前所在框架的同级框架,我们可能应该退出所有框架,然后从根切换到该同级框架。例如,考虑下图,
从根切换到第 1 帧:
driver.switchTo().frames("Frame 1");
切换到第 1 帧之外的第 2 帧:
//Come to root from Frame 1
driver.switchTo().defaultContent();
//Now switch to Frame 2
driver.switchTo().frames("Frame 2");
这也适用于嵌套框架/iFrame。希望这会有所帮助。
谢谢。
关于java - 如何使用 Selenium 在网站上查找带有框架的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770184/