Analisando iframes

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Como o Axe DevTools para Web APIs analisa conteúdo dentro de iframes e como delimitar ou restringir a análise de quadros.

Not for use with personal data

As páginas frequentemente colocam conteúdo substancial dentro de elementos <iframe>: formulários de pagamento, players de mídia, mapas incorporados, widgets de chat e ajuda, e componentes de terceiros. O Axe DevTools para Web APIs analisa o conteúdo desses quadros como parte de uma análise comum de página, em todos os idiomas suportados, de modo que o conteúdo em quadros não seja uma lacuna na sua cobertura e não necessite de um conjunto separado de testes.

Não há nada para ativar. O axe-core é carregado nos quadros da página, cada quadro é analisado junto com o documento de nível superior, e os resultados são combinados em um único relatório para a página.

Como os Resultados de Quadros São Relatados

Os resultados dos quadros chegam nas mesmas matrizes violations, passes, incomplete e inapplicable que o resto da página. O que os identifica é a matriz target em cada nó de resultado: ela guarda um seletor por nível de aninhamento de quadros, seguido por um seletor para o próprio elemento.

  • Um target com uma entrada é um elemento no documento de nível superior.
  • Um target com duas entradas é um elemento dentro de um quadro: o primeiro seletor encontra o quadro no documento pai, e o segundo encontra o elemento dentro do documento desse quadro.
  • Cada entrada adicional representa outro nível de aninhamento de quadros.

Para a estrutura completa do resultado, consulte a Referência da API de JavaScript de navegador.

Delimitando a Análise a um Quadro ou Dentro de um Quadro

Toda API que aceita seletores include e exclude também aceita um caminho por quadros aninhados. A regra é a mesma em todos os idiomas: todos os seletores menos o último correspondem a sucessivos elementos <iframe>, e o último corresponde ao elemento a ser analisado dentro do quadro mais interno. A ordem importa, pois o quadro deve vir antes do elemento dentro dele.

Linguagem Como direcionar um elemento dentro de um quadro Referência
Node.js e JavaScript Passe uma matriz de seletores para include ou exclude Referência da API de JavaScript de navegador
C# Including/Excluding com vários seletores, ou um seletor FromFrames Referência da API de C#
Java including/excluding com um List<String>, ou um IFrameSelector com Hamcrest Testes com Selenium, Referência da API de Hamcrest
Python including()/excluding() com vários seletores Referência da API de Python
Ruby Uma cláusula within com um iframe: e uma hash selector: RSpec
note

Porque uma lista de seletores é sempre lida como um caminho através de quadros, ela não pode ser usada para selecionar vários elementos não relacionados. Para analisar mais de uma região de uma página, chame o método include ou exclude uma vez por região.

Restringindo a Análise de Quadros

Os quadros tornam uma página mais dinâmica, e em páginas onde os quadros são adicionados ou removidos enquanto uma análise está em andamento, injetar axe-core em todos os quadros pode falhar. A API Java fornece uma proteção que limita uma análise ao documento de nível superior: chame disableIframeTesting() antes de executar, e o axe-core não é injetado em nenhum quadro. Veja Testes com Selenium.

important

A opção de execução iframes do axe-core não desativa a análise de quadros nessas APIs. Porque cada biblioteca injetam axe-core nos quadros através do driver do navegador em vez de permitir que axe-core percorrer os quadros, uma análise relata resultados de quadros independentemente de a opção estar definida. Para limitar o escopo de uma análise, exclua o quadro, usando o método exclude para o seu idioma.

Quadros de Origem Cruzada e Sandboxed

Um quadro só pode ser analisado quando o axe-core pode ser executado dentro dele e relatar seus resultados de volta.

Quadros de origem cruzada são analisados. Como essas APIs conduzem uma sessão real de navegador e injetam axe-core em cada quadro através do driver, um quadro servido de uma origem diferente é analisado como qualquer outro quadro, e seus resultados aparecem com o resto da página.

Quadros sandboxed dependem da biblioteca. Um quadro com um atributo sandbox que omite allow-scripts bloqueia a execução do script que o axe-core precisa. Algumas bibliotecas contornam isso e analisam o quadro mesmo assim; outras relatam o quadro como não testado. A API Python expõe without_iframe_sandboxes(), que remove o atributo sandbox para que axe-core possa ser executado dentro desses quadros. Veja a Referência da API de Python.

note

Use a regra frame-tested do axe-core para distinguir "sem problemas neste quadro" de "este quadro nunca foi analisado." Um quadro que o axe-core não conseguiu alcançar é relatado como incompleto, e aquele que ele alcançou passa na regra. É uma regra de boas práticas, por isso só aparece quando o seu conjunto de regras inclui regras de boas práticas; um conjunto de regras limitado às regras WCAG a omite, e um quadro não analisado, então, não produz nenhum sinal.

Tópicos Relacionados