Невозможно щелкнуть ссылку в рамке - PullRequest
0 голосов
/ 19 сентября 2019

Я не могу щелкнуть ссылку в кадре в режиме запуска.Сначала я переключился на Frame, а затем нажмите на ссылку.После нажатия на ссылку, я хочу нажать на другую ссылку в том же фрейме.Но не может нажать на вторую ссылку.В режиме отладки я могу нажать обе ссылки.

Используемый URL: http://demo.guru99.com/selenium/deprecated.html

На странице три фрейма, и я переключаюсь на фрейм с именем "classFrame".Во фрейме я нажимаю на ссылку «Устаревшие».Я получил все содержимое ссылки "Устаревшие".Теперь я хочу нажать на ссылку «Обзор», где я был раньше.Но я не могу нажать на ссылку под названием «Обзор».Пожалуйста, помогите мне нажать на вторую ссылку "Обзор".Я использую следующий код:

    System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
    WebDriver driverChrome = new ChromeDriver();
    WebDriverWait webWaitVar = new WebDriverWait(driverChrome, 1000);
    driverChrome.get("http://demo.guru99.com/selenium/deprecated.html");

    driverChrome.switchTo().frame("classFrame");

    driverChrome.findElement(By.linkText("Deprecated")).click();
    WebElement linkOverview = driverChrome.findElement(By.linkText("Overview"));
    webWaitVar.until(ExpectedConditions.visibilityOf(linkOverview));
    driverChrome.findElement(By.linkText("Overview")).click();

Для HTML-кода страницы, пожалуйста, перейдите по ссылке, поскольку я не могу вставить ее здесь.Большое спасибо

1 Ответ

0 голосов
/ 20 сентября 2019

К click() для элемента с текстом как Устаревший в URL http://demo.guru99.com/selenium/deprecated.html и снова click() для элемента с текстом как Обзор , какнужный элемент находится в пределах <frame>, поэтому необходимо:

  • Индуцировать WebDriverWait для требуемого frameToBeAvailableAndSwitchToIt .
  • Induce WebDriverWait для нужного elementToBeClickable .
  • Вы можете использовать одну из следующих стратегий локатора :

    • cssSelector:

      System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
      WebDriver driverChrome = new ChromeDriver();
      driverChrome.get("http://demo.guru99.com/selenium/deprecated.html");
      new WebDriverWait(driverChrome, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("frame[name='classFrame']")));
      new WebDriverWait(driverChrome, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.topNav a[href^='deprecated-list']"))).click();
      new WebDriverWait(driverChrome, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.topNav a[href^='overview-summary']"))).click();
      
    • xpath:

      System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
      WebDriver driverChrome = new ChromeDriver();
      driverChrome.get("http://demo.guru99.com/selenium/deprecated.html");
      new WebDriverWait(driverChrome, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//frame[@name='classFrame']")));
      new WebDriverWait(driverChrome, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='topNav']//a[starts-with(@href, 'deprecated-list')]"))).click();
      new WebDriverWait(driverChrome, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='topNav']//a[starts-with(@href, 'overview-summary')]"))).click();
      

Здесь вы можете найти соответствующее обсуждение Способы работы с #document в iframe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...