Поскольку вы не опубликовали код Java, который вы написали, поэтому я не могу указать, что пошло не так.
Тем не менее, я не думаю, что в любом случае одинаковый вопрос. (Но это очень плохо, вы должны изменить его, хотя)
Помните, что switchTo().frame()
имеет три перегрузки, вы не должны использовать индекс или имя/идентификатор, а передавать его сами. См. source code here.
Рамка WebDriver (индекс int); // нестабильный
Рамка WebDriver (String nameOrId); // не работают в вашем случае, поскольку они идентичны
Рамка WebDriver (элемент WebElement frameElement); // тот, который вы хотите
Даже driver.findElements(By.name("content")).get(N)
Плохо, так как это зависит от порядка элементов, работающих, но не изящных.
Вы можете найти кадры либо родителем <div>
атрибут id, либо по кадру src
атрибут.
// switch out of all frames, just in case, you might not need this line here
driver.switchTo().defaultContent();
// switch to customer frame
WebElement customerFrame = driver.findElement(By.cssSelector("#folderCustomer iframe"));
// alternative css locator: By.cssSelector("iframe[src*='customerSearch']")
driver.switchTo().frame(customerFrame);
// now inside customer frame, you can do stuff
// when you done, switch out of it
driver.switchTo().defaultContent();
// switch to producer frame now
WebElement producerFrame = driver.findElement(By.cssSelector("#folderProducer iframe"));
// alternative css locator: By.cssSelector("iframe[src*='producerSearch']")
driver.switchTo().frame(producerFrame);
// now inside producer frame, you can do stuff
Из html, который вы там указали, имена iframe НЕ уникальны. Следовательно, вы не можете использовать имя для переключения на второй iframe. Какими другими способами вы пытались переключиться на второй iframe? –
Почему вы не могли использовать родительский div id, а затем развернуться оттуда? –
@MarkRowlands - Я попробовал следующие комбинации xpath driver.switchTo(). Frame ("FWin0"); driver.switchTo(). Frame ("Content0"); driver.switchTo(). Frame (driver.findElement (By.XPath ("// ДИВ [содержит (@ идентификатор, 'folderProducer')]/следующий :: IFRAME"))); xpath = // div [содержит (@ id, 'folderProducer')]/follow :: iframe xpath = // div [содержит (@ id, 'folderProducer')]/follow :: iframe [1] – Thirumalai