Além do uso básico, o Selenium também possui alguns usos avançados que podem nos ajudar a concluir melhor as tarefas de teste automatizado.
1. Use esperas explícitas
Em testes automatizados, geralmente é necessário esperar que um elemento apareça ou uma operação seja concluída antes de executar a próxima etapa. O Selenium fornece a função de espera explícita, que pode esperar que uma determinada condição seja atendida antes de prosseguir para a próxima etapa. Por exemplo, o código a seguir espera que um elemento com id myElement apareça antes de clicar nele:
```
de selenium.webdriver.common.by importar por
de selenium.webdriver.support.ui importar WebDriverWait
de selenium.webdriver.support, importe as condições esperadas como EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'myElement'))
)
element.click()
```
Entre eles, o objeto WebDriverWait aguardará 10 segundos até que a condição especificada (EC.presence_of_element_located(By.ID, 'myElement')) seja atendida.
2. Usando ActionChains
Algumas ações precisam estar na forma de ações do mouse, como passar o mouse, clicar com o botão direito, etc. O Selenium fornece a classe ActionChains que pode simular essas ações do mouse. Por exemplo, o código a seguir simula o passar do mouse sobre um elemento com id myElement:
```
de selenium.webdriver.common.action_chains importar ActionChains
elemento = driver.find_element_by_id('myElement')
action = ActionChains(driver)
action.move_to_element(element).perform()
```
Entre eles, o método `move_to_element()` move o mouse para o elemento especificado, e o método `perform()` executa a ação do mouse.
3. Usando JavaScript
Algumas operações não podem ser feitas por meio de métodos fornecidos pelo Selenium, mas podem ser executadas usando JavaScript. Por exemplo, o código a seguir usa JavaScript para rolar a janela do navegador para baixo:
```
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
```
Entre eles, o método `execute_script()` pode executar código JavaScript.
4. Manipulando pop-ups
Algumas operações abrirão uma nova janela do navegador ou caixa de alerta, o Selenium fornece o método `switch_to` para lidar com essas janelas pop-up. Por exemplo, o código a seguir muda o foco para uma nova janela do navegador:
```
para identificador em driver.window_handles:
driver.switch_to.window(manipulador)
```
Entre eles, o atributo `window_handles` retorna os manipuladores de todas as janelas atuais, e o método `switch_to.window()` pode alternar para a janela especificada.
Acima estão alguns usos avançados do Selenium, que podem ser usados conforme necessário.