#selenium
Вопрос:
Я пытаюсь создать скрипт на JavaScript, который включал бы переключение кадров на этом конкретном веб-сайте, но мне это не удалось. Я попытался найти индекс кадра, используя имя (для кадра нет идентификатора), используя xpath, как явный, так и неявный, но безуспешно. Он также продолжает говорить мне, что идентификатор кадра не может быть строкой, что довольно странно, так как обычно это работает.
Та же команда для поиска одного и того же кадра на одном и том же веб-сайте хорошо работает в Python, но не в JS. Кто-нибудь может мне помочь?
driver.switchTo().frame('mainFrame');
driver.switchTo().defaultContent();
const leftframe = driver.findElement(By.name ("leftFrame"));
driver.switchTo().frame(leftframe);
driver.findElement(By.xpath("/html/body/table/tbody/tr/td/table/tbody/tr[11]/td[3]/a")).click();
driver.switchTo().frame("mainFrame");
Ответ №1:
Вы должны объявить веб-элемент в switchTo().frame
методе. Если вы попытаетесь определить веб-элемент заранее, скорее всего, в конечном итоге вы не получите исключения из такого элемента.
driver.switchTo().frame('mainFrame');
driver.switchTo().defaultContent();
driver.switchTo().frame(driver.findElement(By.name("leftFrame")));
driver.findElement(By.xpath("/html/body/table/tbody/tr/td/table/tbody/tr[11]/td[3]/a")).click();
driver.switchTo().frame("mainFrame");
Комментарии:
1. Я только что попробовал этот метод, но он просто говорит, что идентификатор не может быть строкой. Я получаю эту ошибку InvalidArgumentError: недопустимый аргумент: «идентификатор» не может быть строкой
2. Могу ли я получить полную трассировку стека ошибок ?