2 回答
TA贡献1784条经验 获得超2个赞
该frame
定位是//frameset/frame[2]
,将//a
是一个向下钻取frame
。
也可以name
直接使用属性进行切换。switchTo().frame()
可以接收id
,name
或者WebElement
作为参数
driver.switchTo().frame("mainFrame");
如果框架需要时间加载,您可以使用显式等待和ExpectedCondition
frameToBeAvailableAndSwitchToIt
WebDriverWait wait = new WebDriverWait(WebDriverRefrence,20);wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//frameset/frame[2]")));
TA贡献1802条经验 获得超4个赞
根据您共享的HTML以遍历所需的内容,frame您必须:
Induce WebDriverWait等待所需的框架可用并切换到它。
Induce WebDriverWait使所需元素可点击,您可以使用以下解决方案:
使用name:
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.name("mainFrame")));
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("element_name"))).click();
使用xpath:
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//frame[@name='mainFrame' and contains(@src,'index1')]")));
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("element_xpath"))).click();
添加回答
举报