Questão de Engenharia de Software — Ferramentas para Teste (JUnit, FindBugs, etc.) — FCC 2024
Engenharia de Software›Ferramentas para Teste (JUnit, FindBugs, etc.)
Código
fc147276
Banca
FCC
Órgão
TRT 7
Ano
2024
Cargo
AJ TRT7
Um Analista estã utilizando Selenium WebDriver com Python para automatizar testes de uma aplicação web. Em determinado momento é necessário localizar um botão com o texto “Aceito”. Considere que driver se refere ao componente que controla à navegador web. Em condições ideais, o trecho de código que realiza essa tarefa é:
Abutton = WebDriverWait (driver, 10) until (EC.element_be_clickable( (By.CLASS_NAME, "Aceito")])
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Selenium WebDriver: localização de elementos por texto
Gabarito: letra E. Para localizar um botão pelo texto visível "Aceito" no Selenium WebDriver com Python, a forma mais robusta e semanticamente correta é usar XPath com a função text() — driver.find_element(By.XPATH, "//button[text()='Aceito']"). As demais alternativas usam estratégias inadequadas (CLASS_NAME, NAME, LINK_TEXT) ou contêm erros de sintaxe que as invalidam.
O Selenium WebDriver oferece várias estratégias de localização de elementos (By.ID, By.NAME, By.CLASS_NAME, By.XPATH, By.CSS_SELECTOR, By.LINK_TEXT, By.PARTIAL_LINK_TEXT, By.TAG_NAME, etc.). A escolha depende do que se conhece sobre o elemento e da precisão necessária. Para localizar um elemento pelo seu texto visível, as opções são:
By.LINK_TEXT: localiza âncoras (<a>) pelo texto exato do link. Não funciona para botões (<button>).
By.XPATH com text(): localiza qualquer elemento cujo texto corresponda exatamente ao valor informado. É a estratégia mais flexível e a única, entre as listadas, que atende à necessidade de encontrar um botão pelo texto.
A alternativa E está correta porque usa XPath com a função text() para comparar o conteúdo textual do elemento <button> com a string 'Aceito'. A sintaxe //button[text()='Aceito'] seleciona todos os elementos <button> cujo texto seja exatamente "Aceito".
Vamos analisar cada alternativa em detalhe:
Alternativa A — ❌ Incorreta
A alternativa A mistura conceitos de forma incorreta. Ela tenta usar WebDriverWait com until e EC.element_to_be_clickable, mas a sintaxe está errada: faltam parênteses e a chamada de until não está correta. Além disso, By.CLASS_NAME busca por um atributo class, não pelo texto do elemento. O texto "Aceito" não é uma classe CSS, então essa estratégia não encontraria o botão.
Alternativa B — ❌ Incorreta
A alternativa B tem um erro de digitação: find_elemernt_BY_NAME em vez de find_element(By.NAME, ...). Além disso, By.NAME busca pelo atributo name do elemento HTML, não pelo texto visível. O botão pode não ter um atributo name definido, e mesmo que tivesse, não seria "Aceito" a menos que o desenvolvedor o definisse assim.
Alternativa C — ❌ Incorreta
A alternativa C usa Webdriver.find_element em vez de driver.find_element. O correto é chamar o método no objeto driver, não na classe Webdriver. Além disso, By.NAME busca pelo atributo name, não pelo texto. Mesmo que a sintaxe estivesse correta, a estratégia não localizaria o botão pelo texto "Aceito".
Alternativa D — ❌ Incorreta
A alternativa D usa By.LINK_TEXT, que é específico para localizar links (<a>) pelo texto do link. Botões (<button>) não são links, então essa estratégia não funcionaria. O texto "Aceito" em um botão não é um link text.
Alternativa E — ✅ Correta ⟵ GABARITO
A alternativa E usa driver.find_element(By.XPATH, "//button[text()='Aceito']"). O XPath com text() é a forma correta de localizar um elemento pelo seu texto visível. A sintaxe //button seleciona todos os elementos <button>, e [text()='Aceito'] filtra aqueles cujo texto seja exatamente "Aceito". Isso atende perfeitamente à necessidade do enunciado.
PEGA ESSA DICA!
Em questões de Selenium, lembre-se: By.LINK_TEXT é só para <a>, By.NAME e By.CLASS_NAME buscam atributos HTML, e By.XPATH com text() é a forma genérica de buscar por texto visível. Se a alternativa tiver erro de sintaxe (como find_elemernt ou Webdriver.find_element), já elimine.