我们可以借助以下方法来处理Selenium中的帧-
switchTo()。frame(frameNumber)
此方法使用帧ID作为参数。框架ID的索引从0开始。如果未找到框架,则会引发NoSuchFrameException。
switchTo()。frame(frameName)
此方法使用开发人员定义的框架名称作为参数。框架名称被认为是一个字符串,并用引号引起来。如果找不到框架,则会引发NoSuchFrameException。
switchTo()。frame(WebElement)
此方法使用webelement作为参数。如果找不到框架,则抛出NoSuchFrameException。StaleElementReferenceException如果框架不再活动。
import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; public class FrameSet { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String url = "url with frames"; driver.get(url); driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS); //在索引的帮助下抓取第一帧 driver.switchTo().frame(0); //在框架名称的帮助下抓取框架 driver.switchTo().frame(“<<name expression>>“); //借助框架webelement来抓取框架 WebElement name = driver.findElement(By.name(“frame-right”)); driver.switchTo().frame(driver.findElement(By.name(“<<name expression”))); driver.quit(); } }