Pular para o conteúdo principal

Questão de Engenharia de Software — Ferramentas para Teste (JUnit, FindBugs, etc.) — FCC 2024

Engenharia de SoftwareFerramentas 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 é:
  1. Abutton = WebDriverWait (driver, 10) until (EC.element_be_clickable( (By.CLASS_NAME, "Aceito")])
  2. Bbutton = driver.find_elemernt_BY_NAME ("Aceito ")
  3. Cbutton = Webdriver.find_element  (By.NAME, "Aceito")
  4. Dbutton = driver.find_element (By. LINK_TEXT, "Aceito")
  5. Ebutton = driver. find_element (By.XPATH, "//button [text( ) ='Aceito']")
Revelar gabarito e comentário

GabaritoE — button = driver. find_element (By.XPATH, "//button [text( ) ='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.

Gabarito: letra E

Link permanente: /questoes/fc147276