Selenium Python Readthedocs Io en Latest
Selenium Python Readthedocs Io en Latest
Baiju Muthukadan
14 de dezembro de 2022
Machine Translated by Google
Machine Translated by Google
Conteúdo
1 Instalação 3
3 Navegando
3.1 Interagindo com a página . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 13 .
3.2 Preenchimento de . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . .
.
formulários 3.3 Arrastar e soltar .. . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 13
3.4 Movendo-se entre janelas e molduras 3.5 . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 14 .
Diálogos pop-up . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 15 .
3.6 Navegação: histórico e localização . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 15 .
3.7 Cookies . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 16 . 16 . 16
4 Localizando
Elementos 4.1 . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 17 .
. . . por
Localizando por Id 4.2 Localizando . . Nome
. . . .. . . .
. . . . . . . . . . . . . . ..... . . . . . . . . . . . 18 .
4.3 Localizando por XPath . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 18 .
4.4 Localizando Hiperlinks por Texto de Link . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 19 .
4.5 Localizando Elementos por Nome de Tag . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 20 . 20
4.6 Localizando Elementos por Nome de Classe . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 21
4.7 Localizando Elementos por Seletores CSS . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 21
5 Esperas
5.1 Esperas Explícitas . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 23 .
5.2 Esperas implícitas . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 23 . 25
eu
Machine Translated by Google
6 Objetos de página 27
6.1 Caso de teste . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 27
6.2 Classes de objetos de . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 28 .
. . .
página 6.3 Elementos de página . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 29
6.4 Localizadores . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 29
7 API do WebDriver
7.1 Exceções . . . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 31 .
7.2 Cadeias de Ação . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 32
7.3 Alertas ... . . . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 41
7.4 Teclas especiais . . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 44 .
7.5 Localizar elementos por . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 45
7.6 Capacidades Desejadas . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 47 .
7.7 Ações de toque . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 48 .
7.8 Proxy . . . . . . . . . .
. . .
. ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 48 .
7.9 Utilitários . . . . . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 48 .
7.10 Serviço . . . . . . . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 50 .
7.11 Cache de aplicativos . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 51 .
7.12 Firefox WebDriver . . . . .
. . ..... . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 52 .
7.13 Opções do Firefox WebDriver . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 53 .
7.14 Perfil do Firefox WebDriver . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 55 .
7.15 Firefox WebDriver Binário . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 56 .
7.16 Conexão da extensão Firefox WebDriver . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 57 .
7.17 Driver da Web do Chrome . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 57 .
7.18 Opções do Chrome WebDriver . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 58 .
7.19 Serviço Chrome WebDriver . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 59 .
7.20 Driver Web Remoto . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 59 .
7.21 WebElement do WebDriver Remoto . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 59 .
7.22 Comando WebDriver Remoto . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 68
7.23 Manipulador de erros do WebDriver remoto . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 72
. . . . .....
7.24 WebDriver remoto Mobile 7.25 Conexão . . . . . . . . . . . . . . ..... . . . . . . . . . . . 74 .
remota do WebDriver remoto . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 75 .
7.26 Utilitários do WebDriver Remoto . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . 76
7.27 Driver da Web do Internet Explorer . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 77 .
7.28 Driver da Web do Android . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . 78 .
7.29 Opera WebDriver . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 79 .
7.30 PhantomJS WebDriver . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 79 .
7.31 Serviço PhantomJS WebDriver . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 79 .
7.32 Safari WebDriver . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 79 .
7.33 Serviço Safari WebDriver . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 79 .
7.34 Selecione Suporte . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 80 .
7.35 Suporte de espera . . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 80 .
7.36 Suporte de cores . . . . . . . . . . ..... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 82 .
7.37 Suporte para WebDriver de Disparo de Eventos . . .... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 83 .
7.38 Suporte a ouvinte de eventos abstratos . . . ... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 83 .
7.39 Condições esperadas Suporte . . . . . ... . . . . . . . . . . . . . . ..... . . . . . . . . . . . 85 . 85
ii
Machine Translated by Google
9 índices e tabelas 93
Índice 97
iii
Machine Translated by Google
4
Machine Translated by Google
Licença Este documento está licenciado sob Creative Commons Attribution-ShareAlike 4.0 International
Licença.
Nota: Esta não é uma documentação oficial. Se quiser contribuir com esta documentação, você pode bifurcar este projeto no GitHub e enviar
solicitações pull. Você também pode enviar seus comentários para o meu e-mail: baiju.m.mail AT gmail DOT com. Até agora, mais de 50
membros da comunidade contribuíram para este projeto (veja as solicitações fechadas). Encorajo os colaboradores a adicionar mais seções e
torná-la uma documentação incrível! Se você conhece alguma tradução deste documento, envie um PR para atualizar a lista abaixo.
Traduções:
• chinês
• japonês
Conteúdo 1
Machine Translated by Google
2 Conteúdo
Machine Translated by Google
CAPÍTULO 1
Instalação
1.1 Introdução
As ligações do Selenium Python fornecem uma API simples para escrever testes funcionais/de aceitação usando o Selenium WebDriver.
Através da Selenium Python API você pode acessar todas as funcionalidades do Selenium WebDriver de forma intuitiva.
As ligações do Selenium Python fornecem uma API conveniente para acessar Selenium WebDrivers como Firefox, Ie, Chrome, Remote
etc. As versões atuais do Python suportadas são 3.5 e superiores.
Esta documentação explica a API Selenium 2 WebDriver. Selenium 1 / Selenium RC API não é abordado aqui.
Usar pip para instalar o pacote Selenium. Python 3 tem pip disponível na biblioteca padrão. Usando o pip, você pode instalar o Selenium
assim:
Você pode considerar usar virtualenv para criar ambientes Python isolados. Python 3 tem venv que é quase o mesmo que virtualenv.
Você também pode baixar as ligações Python para Selenium na página PyPI para o pacote Selenium. e instale manualmente.
3
Machine Translated by Google
Agora você pode executar seus scripts de teste usando Python. Por exemplo, se você criou um script baseado em Selenium e o salvou em
C:\my_selenium_script.py, você pode executá-lo assim:
C:\Python39\python.exe C:\my_selenium_script.py
Para construir o Selenium Python a partir do código-fonte, clone o repositório oficial. Ele contém o código-fonte para todos os sabores oficiais
do Selenium, como Python, Java, Ruby e outros. O código Python reside no diretório /py. Para construir, você também precisará do Bazel
sistema de construção.
Nota: Atualmente, conforme o Selenium se aproxima da versão 4.0.0, ele requer o Bazel 3.2.0 (instruções de instalação), mesmo que 3.3.0
já esteja disponível.
Para construir um Wheel a partir dos fontes, execute o seguinte comando na raiz do repositório:
bazel //py:selenium-roda
Este comando preparará o código-fonte com alguns arquivos JS pré-processados necessários para alguns módulos do webdriver e construirá
o pacote .whl dentro do diretório ./bazel-bin/py/. Depois, você pode usar o pip para instalá-lo.
1.5 Drivers
O Selenium requer um driver para fazer a interface com o navegador escolhido. Firefox, por exemplo, requer geckodriver, que precisa ser
instalado antes que os exemplos abaixo possam ser executados. Certifique-se de que esteja em seu PATH, por exemplo, coloque-o em /usr/
bin ou /usr/local/bin.
A não observância desta etapa resultará em um erro selenium.common.exceptions.WebDriverException: Mensagem: o executável 'geck
odriver' precisa estar em PATH.
Outros navegadores suportados terão seus próprios drivers disponíveis. Seguem links para alguns dos drivers de navegador mais populares.
Para obter mais informações sobre a instalação do driver, consulte a documentação oficial.
Nota: O servidor Selenium só é necessário se você quiser usar o WebDriver remoto. Consulte a seção Usando Selenium com
WebDriver remoto para obter mais detalhes. Se você é iniciante aprendendo Selenium, pode pular esta seção
4 Capítulo 1. Instalação
Machine Translated by Google
O servidor Selenium é um programa Java. Java Runtime Environment (JRE) 1.6 ou versão mais recente é recomendado para executar
o servidor Selenium.
Você pode baixar o servidor Selenium 2.x na página de download do site da Selenium. O nome do arquivo deve ser algo assim:
selenium-server-standalone-2.xxjar. Você sempre pode baixar a versão 2.x mais recente do servidor Selenium.
Se o Java Runtime Environment (JRE) não estiver instalado em seu sistema, você poderá fazer o download do JRE no site da Oracle.
Se você estiver usando um sistema GNU/Linux e tiver acesso root em seu sistema, também poderá usar as instruções do sistema
operacional para instalar o JRE.
Se o comando java estiver disponível no PATH (variável de ambiente), você pode iniciar o servidor Selenium usando este comando:
Substitua 2.xx pela versão atual do servidor Selenium que você baixou do site.
Se o JRE estiver instalado como um usuário não raiz e/ou se não estiver disponível no PATH (variável de ambiente), você pode digitar o
caminho relativo ou absoluto para o comando java. Da mesma forma, você pode fornecer um caminho relativo ou absoluto para o arquivo
jar do servidor Selenium. Então, o comando ficará mais ou menos assim:
6 Capítulo 1. Instalação
Machine Translated by Google
CAPÍTULO 2
Começando
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN) assert
"Nenhum resultado encontrado." não em driver.page_source driver.close()
O script acima pode ser salvo em um arquivo (por exemplo:- python_org_search.py), então pode ser executado assim:
python python_org_search.py
O python que você está executando deve ter o módulo Selenium instalado.
7
Machine Translated by Google
driver = webdriver.Firefox()
O método driver.get navegará para uma página fornecida pela URL. O WebDriver aguardará até que a página seja totalmente carregada (ou seja, o
evento “onload” foi acionado) antes de retornar o controle ao seu teste ou script. Esteja ciente de que, se sua página usa muito AJAX no carregamento,
o WebDriver pode não saber quando foi totalmente carregado:
driver.get("http://www.python.org")
A próxima linha é uma afirmação para confirmar que o título contém a palavra “Python”:
O WebDriver oferece várias maneiras de localizar elementos usando o método find_element. Por exemplo, o elemento de texto de entrada pode ser
localizado por seu atributo name usando o método find_element e usando By.NAME como seu primeiro parâmetro.
Uma explicação detalhada sobre como encontrar elementos está disponível no capítulo Localizando Elementos :
Em seguida, estamos enviando chaves, isso é semelhante a inserir chaves usando o teclado. Chaves especiais podem ser enviadas usando a classe
Keys importada de selenium.webdriver.common.keys. Por segurança, primeiro limparemos qualquer texto pré-preenchido no campo de entrada (por
exemplo, "Pesquisar") para que não afete nossos resultados de pesquisa:
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
Após o envio da página, você deve obter o resultado, se houver. Para garantir que alguns resultados sejam encontrados, faça uma afirmação:
Finalmente, a janela do navegador é fechada. Você também pode chamar o método quit em vez de close. O método quit sairá do navegador,
enquanto close fechará uma guia, mas se apenas uma guia estiver aberta, por padrão, a maioria dos navegadores fechará completamente.:
driver.close()
Selenium é usado principalmente para escrever casos de teste. O pacote Selenium em si não fornece uma ferramenta/framework de teste.
Você pode escrever casos de teste usando o módulo unittest do Python. As outras opções para uma ferramenta/estrutura são pytest e nariz.
Neste capítulo, usamos unittest como o framework de escolha. Aqui está o exemplo modificado que usa o módulo unittest. Este é um teste para a
funcionalidade de pesquisa do python.org:
8 Capítulo 2. Introdução
Machine Translated by Google
class PythonOrgSearch(unittest.TestCase):
def tearDown(self):
self.driver.close()
Você pode executar o caso de teste acima a partir de um shell como este:
python test_python_org_search.py
.
-------------------------------------------------- --------------------
OK
Observação: para executar o teste acima no IPython ou Jupyter, você deve passar alguns argumentos para a função principal, conforme
mostrado abaixo:
unittest.main(argv=['first-arg-is-ignored'], exit=False)
A classe de caso de teste é herdada de unittest.TestCase. Herdar da classe TestCase é a maneira de dizer ao módulo unittest que este é
um caso de teste:
class PythonOrgSearch(unittest.TestCase):
O método setUp faz parte da inicialização. Este método será chamado antes de cada função de teste que você escreverá nesta classe de
caso de teste. Aqui você está criando uma instância de um Firefox WebDriver.
Este é o método do caso de teste. O método de caso de teste deve sempre começar com o teste de caracteres. A primeira linha dentro
deste método cria uma referência local ao objeto driver criado no método setUp.
O método driver.get navegará para uma página fornecida pela URL. O WebDriver aguardará até que a página seja totalmente carregada
(ou seja, o evento “onload” foi acionado) antes de retornar o controle ao seu teste ou script. Esteja ciente de que, se sua página usa muito
AJAX no carregamento, o WebDriver pode não saber quando foi totalmente carregado:
driver.get("http://www.python.org")
A próxima linha é uma afirmação para confirmar que o título contém a palavra “Python”:
self.assertIn("Python", driver.title)
O WebDriver oferece várias maneiras de localizar elementos usando o método find_element. Por exemplo, o elemento de texto de entrada
pode ser localizado por seu atributo name usando o método find_element. Uma explicação detalhada sobre como encontrar elementos
está disponível no capítulo Localizando Elementos :
Em seguida, estamos enviando chaves, isso é semelhante a inserir chaves usando o teclado. Chaves especiais podem ser enviadas
usando a classe Keys importada de selenium.webdriver.common.keys:
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
Após o envio da página, você deve obter o resultado de acordo com a pesquisa, se houver. Para garantir que alguns resultados sejam
encontrados, faça uma afirmação:
O método tearDown será chamado após cada método de teste. Este é um lugar para fazer todas as ações de limpeza. No método atual, a
janela do navegador é fechada. Você também pode chamar o método quit em vez de close. O método quit fechará todo o navegador,
enquanto close fechará uma guia, mas se for a única guia aberta, por padrão, a maioria dos navegadores fechará completamente.:
def tearDown(self):
self.driver.close()
As linhas finais são algum código clichê para executar o conjunto de testes:
10 Capítulo 2. Introdução
Machine Translated by Google
Ao executar o servidor Selenium, você pode ver uma mensagem como esta:
A linha acima diz que você pode usar este URL para se conectar ao WebDriver remoto. aqui estão alguns exemplos:
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
options=webdriver.ChromeOptions()
)
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub', options=webdriver.FirefoxOptions()
12 Capítulo 2. Introdução
Machine Translated by Google
CAPÍTULO 3
Navegação
A primeira coisa que você deseja fazer com o WebDriver é navegar até um link. A maneira normal de fazer isso é chamando o método get:
driver.get("http://www.google.com")
O WebDriver aguardará até que a página seja totalmente carregada (ou seja, o evento onload foi acionado) antes de retornar o controle ao
seu teste ou script. Esteja ciente de que, se sua página usar muito AJAX no carregamento, o WebDriver pode não saber quando foi
totalmente carregado. Se você precisar garantir que essas páginas sejam totalmente carregadas, poderá usar waits.
Apenas ser capaz de ir a lugares não é muito útil. O que realmente gostaríamos de fazer é interagir com as páginas ou, mais
especificamente, com os elementos HTML de uma página. Primeiro de tudo, precisamos encontrar um. O WebDriver oferece várias
maneiras de localizar elementos. Por exemplo, dado um elemento definido como:
Você também pode procurar um link pelo texto, mas cuidado! O texto deve ser uma correspondência exata! Você também deve ter cuidado
ao usar o XPATH no WebDriver. Se houver mais de um elemento que corresponda à consulta, apenas o primeiro será retornado. Se nada
for encontrado, uma NoSuchElementException será lançada.
O WebDriver possui uma API “baseada em objeto”; representamos todos os tipos de elementos usando a mesma interface. Isso significa
que, embora você possa ver muitos métodos possíveis que podem ser invocados ao pressionar a combinação de teclas de preenchimento
automático do IDE, nem todos farão sentido ou serão válidos. Não se preocupe! O WebDriver tentará fazer a coisa certa,
13
Machine Translated by Google
e se você chamar um método que não faz sentido (“setSelected()” em uma tag “meta”, por exemplo) uma exceção será levantada.
Então, você tem um elemento. O que você pode fazer com isso? Primeiro de tudo, você pode querer inserir algum texto em um campo de texto:
element.send_keys("algum texto")
Você pode simular o pressionamento das teclas de seta usando a classe “Keys”:
É possível chamar send_keys em qualquer elemento, o que possibilita testar atalhos de teclado como os usados no GMail. Um efeito colateral disso
é que digitar algo em um campo de texto não o limpará automaticamente. Em vez disso, o que você digitar será acrescentado ao que já está lá.
Você pode facilmente limpar o conteúdo de um campo de texto ou textarea com o método clear:
element.clear()
Já vimos como inserir texto em uma área de texto ou campo de texto, mas e os outros elementos? Você pode “alternar” o estado do menu suspenso
e usar “setSelected” para definir algo como uma tag OPTION selecionada. Lidar com tags SELECT não é tão ruim:
Isso localizará o primeiro elemento “SELECT” na página e percorrerá cada uma de suas OPTIONs, imprimindo seus valores e selecionando cada
um por sua vez.
Como você pode ver, esta não é a maneira mais eficiente de lidar com elementos SELECT. As classes de suporte do WebDriver incluem uma
chamada “Select”, que fornece métodos úteis para interagir com eles:
Suponha que em um teste, precisamos da lista de todas as opções selecionadas padrão, a classe Select fornece um método de propriedade que retorna
uma lista:
14 Capítulo 3. Navegando
Machine Translated by Google
opções = selecionar.opções
Depois de terminar de preencher o formulário, você provavelmente deseja enviá-lo. Uma maneira de fazer isso seria encontrar o botão
“enviar” e clicar nele:
Como alternativa, o WebDriver possui o método de conveniência “enviar” em cada elemento. Se você chamar isso em um elemento
dentro de um formulário, o WebDriver percorrerá o DOM até encontrar o formulário anexo e, em seguida, chamará o submit nele. Se o
elemento não estiver em um formulário, o NoSuchElementException será gerado:
element.submit()
Você pode usar arrastar e soltar, movendo um elemento por uma certa quantidade ou para outro elemento:
É raro um aplicativo da Web moderno não ter nenhum quadro ou ser restrito a uma única janela. O WebDriver suporta a movimentação
entre janelas nomeadas usando o método “switch_to.window”:
driver.switch_to.window("windowName")
Todas as chamadas ao driver agora serão interpretadas como sendo direcionadas para a janela específica. Mas como você sabe o
nome da janela? Dê uma olhada no javascript ou no link que o abriu:
<a href="somewhere.html" target="windowName"> Clique aqui para abrir uma nova janela</a>
Alternativamente, você pode passar um “manípulo de janela” para o método “switch_to.window()”. Sabendo disso, é possível iterar em
todas as janelas abertas da seguinte forma:
driver.switch_to.frame("frameName")
É possível acessar os subframes separando o caminho com um ponto, e você também pode especificar o frame pelo seu índice.
Aquilo é:
driver.switch_to.frame("frameName.0.child")
iria para o frame chamado “child” do primeiro subframe do frame chamado “frameName”. Todos os quadros são avaliados como se
fossem *de cima*.
Quando terminarmos de trabalhar nos quadros, teremos que voltar ao quadro pai, o que pode ser feito usando:
driver.switch_to.default_content()
O Selenium WebDriver possui suporte integrado para lidar com caixas de diálogo pop-up. Depois de acionar uma ação que abriria um pop-
up, você pode acessar o alerta com o seguinte:
alert = driver.switch_to.alert
Isso retornará o objeto de alerta atualmente aberto. Com este objeto, agora você pode aceitar, descartar, ler seu conteúdo ou até mesmo
digitar em um prompt. Essa interface funciona igualmente bem em alertas, confirmações e prompts. Consulte a documentação da API
para obter mais informações.
Anteriormente, abordamos a navegação para uma página usando o comando “get” ( driver.get("http://www.example.com")). Como você
viu, o WebDriver tem várias interfaces menores e focadas em tarefas, e a navegação é uma tarefa útil.
Para navegar para uma página, você pode usar o método get:
driver.get("http://www.example.com")
driver.forward() driver.back()
Esteja ciente de que essa funcionalidade depende inteiramente do driver subjacente. É possível que algo inesperado aconteça quando
você chamar esses métodos se estiver acostumado com o comportamento de um navegador em detrimento de outro.
3.7 Cookies
Antes de passar para a próxima seção do tutorial, você pode estar interessado em entender como usar cookies. Antes de tudo, você
precisa estar no domínio para o qual o cookie será válido:
16 Capítulo 3. Navegando
Machine Translated by Google
CAPÍTULO 4
Localizando Elementos
Existem várias estratégias para localizar elementos em uma página. Você pode usar o mais adequado para o seu caso. O Selenium fornece o
seguinte método para localizar elementos em uma página:
• find_element
• encontrar_elementos
Exemplo de uso:
Os atributos disponíveis para a classe By são usados para localizar elementos em uma página. Estes são os atributos disponíveis para Por classe:
ID = "id"
NOME = "nome"
XPATH = "xcaminho"
LINK_TEXT = "texto do link"
PARTIAL_LINK_TEXT = "texto do link parcial"
TAG_NAME = "nome da etiqueta"
CLASS_NAME = "nome da turma"
CSS_SELECTOR = "seletor de css"
A classe 'By' é usada para especificar qual atributo é usado para localizar elementos em uma página. Estas são as várias maneiras pelas quais os
atributos são usados para localizar elementos em uma página:
find_element(By.ID, "id")
find_element(By.NAME, "name")
find_element(By.XPATH, "xpath")
find_element(By.LINK_TEXT, "link text")
(continua na próxima página)
17
Machine Translated by Google
Se você deseja localizar vários elementos com o mesmo atributo, substitua find_element por find_elements.
Use isso quando você souber o atributo id de um elemento. Com esta estratégia, o primeiro elemento com um atributo id correspondente será
retornado. Se nenhum elemento tiver um atributo id correspondente, uma NoSuchElementException será gerada.
<html>
<body>
<form id="loginForm"> <input
name="username" type="text" /> <input name="password"
type="password" /> <input name="continue" type="submit "
value="Login" />
</form>
</body>
</html>
Use isso quando você souber o atributo de nome de um elemento. Com esta estratégia, o primeiro elemento com um atributo de nome
correspondente será retornado. Se nenhum elemento tiver um atributo de nome correspondente, uma NoSuchElementException será lançada.
<html>
<body>
<form id="loginForm"> <input
name="username" type="text" /> <input name="password"
type="password" /> <input name="continue" type="submit "
value="Login" /> <input name="continue" type="button" value="Clear" /> </form> </
body> </html>
XPath é a linguagem usada para localizar nós em um documento XML. Como o HTML pode ser uma implementação de XML (XHTML), os usuários do
Selenium podem aproveitar essa poderosa linguagem para direcionar elementos em seus aplicativos da web. XPath oferece suporte a métodos simples de
localização por atributos de id ou nome e os estende abrindo todos os tipos de novas possibilidades, como localizar a terceira caixa de seleção na página.
Uma das principais razões para usar o XPath é quando você não tem um atributo id ou name adequado para o elemento que deseja localizar. Você pode
usar XPath para localizar o elemento em termos absolutos (não recomendado) ou relativo a um elemento que tenha um atributo id ou name. Os
localizadores XPath também podem ser usados para especificar elementos por meio de atributos diferentes de id e nome.
Os XPaths absolutos contêm a localização de todos os elementos da raiz (html) e, como resultado, provavelmente falharão com apenas o menor ajuste no
aplicativo. Ao localizar um elemento próximo com um atributo id ou name (idealmente um elemento pai), você pode localizar seu elemento de destino com
base no relacionamento. Isso tem muito menos probabilidade de mudar e pode tornar seus testes mais robustos.
<html>
<body>
<form id="loginForm"> <input
name="username" type="text" /> <input name="password"
type="password" /> <input name="continue" type="submit "
value="Login" /> <input name="continue" type="button" value="Clear" /> </form> </
body> </html>
1. Primeiro elemento de formulário com um elemento filho de entrada com nome definido como nome de usuário
2. Primeiro insira o elemento filho do elemento de formulário com id de atributo definido como loginForm
3. Primeiro elemento de entrada com nome de atributo definido como nome de usuário
1. Entrada com nome de atributo definido para continuar e tipo de atributo definido como botão
2. Quarto elemento filho de entrada do elemento de formulário com ID de atributo definido como loginForm
Esses exemplos cobrem alguns conceitos básicos, mas para aprender mais, as seguintes referências são recomendadas:
Aqui estão alguns complementos muito úteis que podem ajudar a descobrir o XPath de um elemento:
Use isso quando souber o texto do link usado em uma marca de âncora. Com esta estratégia, o primeiro elemento com o texto do link correspondente
ao valor fornecido será retornado. Se nenhum elemento tiver um atributo de texto de link correspondente, uma NoSuchElementException será lançada.
<html>
<body>
<p>Tem certeza de que deseja fazer isso?</p> <a
href="continue.html">Continuar</a> <a
href="cancel.html">Cancelar</a> < /corpo> </html>
Use isso quando quiser localizar um elemento pelo nome da marca. Com esta estratégia, será retornado o primeiro elemento com o nome da tag
informado. Se nenhum elemento tiver um nome de tag correspondente, uma NoSuchElementException será gerada.
<html>
<body>
<h1>Bem-vindo</h1>
<p>O conteúdo do site vai aqui.</p> </body>
</html>
Use isso quando quiser localizar um elemento pelo nome da classe. Com essa estratégia, o primeiro elemento com o atributo de nome de
classe correspondente será retornado. Se nenhum elemento tiver um atributo de nome de classe correspondente, uma
NoSuchElementException será lançada.
<html>
<body>
<p class="content"> O conteúdo do site vai aqui.</p> </body> </html>
Use isso quando quiser localizar um elemento usando o seletor CSS sintaxe. Com esta estratégia, o primeiro elemento correspondente ao
seletor CSS fornecido será retornado. Se nenhum elemento corresponder ao seletor CSS fornecido, uma NoSuchElementException será
lançada.
<html>
<body>
<p class="content"> O conteúdo do site vai aqui.</p> </body> </html>
CAPÍTULO 5
espera
Atualmente, a maioria dos aplicativos da web está usando técnicas AJAX. Quando uma página é carregada pelo navegador, os elementos
dessa página podem ser carregados em diferentes intervalos de tempo. Isso dificulta a localização de elementos: se um elemento ainda não
estiver presente no DOM, uma função de localização gerará uma exceção ElementNotVisibleException. Usando esperas, podemos resolver
esse problema. A espera fornece alguma folga entre as ações executadas - principalmente localizar um elemento ou qualquer outra operação
com o elemento.
O Selenium Webdriver fornece dois tipos de espera - implícito e explícito. Uma espera explícita faz com que o WebDriver espere que uma
determinada condição ocorra antes de prosseguir com a execução. Uma espera implícita faz com que o WebDriver pesquise o DOM por um
determinado período de tempo ao tentar localizar um elemento.
Uma espera explícita é um código que você define para aguardar a ocorrência de uma determinada condição antes de prosseguir no código.
O caso extremo disso é time.sleep(), que define a condição para um período de tempo exato de espera. Existem alguns métodos de
conveniência fornecidos que o ajudam a escrever código que aguardará apenas o tempo necessário. WebDriverWait em combinação com
ExpectedCondition é uma maneira de fazer isso.
EC.presence_of_element_located((By.ID, "myDynamicElement"))
) finalmente:
driver.quit()
23
Machine Translated by Google
No código acima, o Selenium esperará no máximo 10 segundos para que um elemento que corresponda aos critérios fornecidos seja encontrado.
Se nenhum elemento for encontrado nesse tempo, um TimeoutException será lançado. Por padrão, WebDriverWait chama ExpectedCondition a
cada 500 milissegundos até retornar com sucesso. ExpectedCondition retornará true (Boolean) em caso de sucesso ou não nulo se falhar em
localizar um elemento.
Condições esperadas
Existem algumas condições comuns que são frequentemente usadas ao automatizar os navegadores da web. Abaixo estão os nomes de cada um.
A ligação Selenium Python fornece alguns métodos convenientes portanto, você não precisa codificar uma classe de condição_esperada por conta
própria ou criar seu próprio pacote de utilitários para ela.
• title_is
• título_contém
• presença_do_elemento_localizado
• visibilidade_do_elemento_localizado
• visibilidade_de
• presença_de_todos_elementos_localizados
• text_to_be_present_in_element
• text_to_be_present_in_element_value
• frame_to_be_available_and_switch_to_it
• invisibilidade_do_elemento_localizado
• element_to_be_clickable
• staleness_of
• elemento_a_ser_selecionado
• element_located_to_be_selected
• element_selection_state_to_be
• element_located_selection_state_to_be
• alert_is_present
O módulo Expected_conditions contém um conjunto de condições predefinidas para usar com WebDriverWait.
Você também pode criar condições de espera personalizadas quando nenhum dos métodos de conveniência anteriores atender aos seus requisitos.
Uma condição de espera personalizada pode ser criada usando uma classe com o método __call__ que retorna False quando a condição não
corresponde.
classe element_has_css_class(objeto):
"""Uma expectativa para verificar se um elemento possui uma classe CSS específica.
24 Capítulo 5. Esperas
Machine Translated by Google
elemento de retorno
outro:
retorna falso
# Espera até que um elemento com id='myNewInput' tenha classe 'myCSSClass' wait = WebDriverWait(driver,
10) element = wait.until(element_has_css_class((By.ID, 'myNewInput'), "myCSSClass"))
Você também pode considerar o uso de polling2 biblioteca que você precisa instalar separadamente.
Uma espera implícita informa ao WebDriver para pesquisar o DOM por um determinado período de tempo ao tentar localizar qualquer elemento
(ou elementos) não imediatamente disponível. A configuração padrão é 0 (zero). Depois de definida, a espera implícita é definida para a vida útil
do objeto WebDriver.
driver = webdriver.Firefox()
driver.implicitly_wait(10) # segundos driver.get("http://
somedomain/url_that_delays_loading") myDynamicElement =
driver.find_element_by_id("myDynamicElement")
26 Capítulo 5. Esperas
Machine Translated by Google
CAPÍTULO 6
Objetos de página
Este capítulo é um tutorial de introdução ao padrão de design Page Objects. Um objeto de página representa uma área onde o teste interage na interface
com o usuário do aplicativo da web.
• Criação de código reutilizável que pode ser compartilhado em vários casos de teste
• Se a interface do usuário for alterada, a correção precisará ser alterada em apenas um local
Aqui está um caso de teste que procura uma palavra no site python.org e garante alguns resultados. A seção a seguir apresentará o módulo de página
onde os objetos de página serão definidos.
import unittest da
página de importação do selenium import
webdriver
class PythonOrgSearch(unittest.TestCase):
"""Uma classe de teste de amostra para mostrar como o objeto de página funciona"""
def test_search_in_python_org(self):
"""Testa o recurso de pesquisa do python.org. Pesquisa a palavra "pycon" e verifica se alguns resultados são
exibidos. Observe que ele não procura nenhum texto específico na página de resultados da pesquisa. Esse
teste verifica se os resultados não estavam vazios. """
27
Machine Translated by Google
#Carregue a página principal. Nesse caso, a página inicial do Python.org. main_page = page.MainPage(self.driver)
def derrubar(self):
self.driver.close()
O padrão de objeto de página pretende criar um objeto para cada parte de uma página da web. Essa técnica ajuda a criar uma
separação entre o código de teste e o código real que interage com a página da web.
classe SearchTextElement(BasePageElement):
"""Esta classe obtém o texto de pesquisa do localizador especificado"""
classe BasePage(objeto):
"""Classe base para inicializar a página base que será chamada de todas as páginas"""
def is_title_matches(self):
"""Verifica se o texto codificado "Python" aparece no título da página"""
def click_go_button(self):
"""Aciona a pesquisa"""
classe SearchResultsPage(BasePage):
"""Os métodos de ação da página de resultados de pesquisa vêm aqui"""
def is_results_found(self):
# Provavelmente deve procurar por este texto no elemento específico da página #, mas por
enquanto funciona bem, retorne "Nenhum resultado encontrado." não em self.driver.page_source
classe BasePageElement(objeto):
"""Classe de página base que é inicializada em cada classe de objeto de página."""
driver = obj.driver
WebDriverWait(driver, 100).until( lambda driver:
driver.find_element_by_name(self.locator))
driver.find_element_by_name(self.locator).clear()
driver.find_element_by_name(self.locator).send_keys(value)
driver = obj.driver
WebDriverWait(driver, 100).until( lambda driver:
driver.find_element_by_name(self.locator))
element = driver.find_element_by_name(self.locator) return element.get_attribute("value")
6.4 Localizadores
Uma das práticas é separar as strings do localizador do local onde estão sendo utilizadas. Neste exemplo, os
localizadores da mesma página pertencem à mesma classe.
O locators.py ficará assim:
classe SearchResultsPageLocators(objeto):
"""Uma classe para localizadores de resultados de pesquisa. Todos os localizadores de resultados de pesquisa devem
venha aqui"""
passar
CAPÍTULO 7
API do WebDriver
Nota: Esta não é uma documentação oficial. A documentação oficial da API está disponível aqui.
As definições de API neste capítulo mostram a localização absoluta das classes. No entanto, o estilo de importação recomendado é o
seguinte:
webdriver.Firefox
webdriver.FirefoxProfile
webdriver.Chrome
webdriver.ChromeOptions
webdriver.Ie
webdriver.Opera
webdriver.PhantomJS
webdriver.Remote
webdriver.DesiredCapabilities
webdriver.ActionChains
webdriver.TouchActions
webdriver.Proxy
As classes de exceção podem ser importadas assim (substitua TheNameOfTheExceptionClass pelo nome de classe real fornecido
abaixo):
31
Machine Translated by Google
Alguns atributos podem ser chamados (ou métodos) e outros não podem ser chamados (propriedades). Todos os atributos que podem ser chamados
terminam com colchetes.
• url_atual
Uso:
driver.current_url
• fechar()
Uso:
driver.close()
7.1 Exceções
exceção selenium.common.exceptions.ElementClickInterceptedException(msg:
Opcional[str]
=
Nenhum,
tela:
Opcional[str]
=
Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
=
Nenhum)
Bases: selenium.common.exceptions.WebDriverException
O comando Element Click não pôde ser concluído porque o elemento que recebe os eventos está ocultando o elemento que foi
solicitado para ser clicado.
exceção selenium.common.exceptions.ElementNotInteractableException(msg:
Opcional[str]
=
Nenhum,
tela:
Opcional[str]
=
Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
=
Nenhum)
Bases: selenium.common.exceptions.InvalidElementStateException
Lançado quando um elemento está presente no DOM, mas as interações com esse elemento atingirão outro elemento devido à
ordem de pintura
= Nenhum,
tela:
Opcional[str]
= Nenhum,
rastreamento
de pilha:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.InvalidElementStateException
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.InvalidElementStateException
Lançado quando um elemento está presente no DOM, mas não é visível e, portanto, não pode ser interagido.
Mais comumente encontrado ao tentar clicar ou ler o texto de um elemento que está oculto na visualização.
7.1. Exceções 33
Machine Translated by Google
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
trace:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Nenhum, Opcional[str]
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Lançado quando o suporte IME não está disponível. Essa exceção é lançada para cada chamada de método relacionada a IME se o
suporte a IME não estiver disponível na máquina.
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
trace:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
A navegação fez com que o agente do usuário atingisse um aviso de certificado, que geralmente é o resultado de um certificado TLS
expirado ou inválido.
Nenhum, Opcional[str]
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
trace:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
exceção selenium.common.exceptions.InvalidCoordinatesException(msg: Op
cional[str]
=
Nenhum, tela:
Opcional[str] =
Nenhum,
rastreamento
de pilha: Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
trace:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Lançado quando um comando não pôde ser concluído porque o elemento está em um estado inválido.
Isso pode ser causado pela tentativa de limpar um elemento que não é editável e redefinível.
Nenhum, Opcional[str]
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Lançado quando o seletor que é usado para localizar um elemento não retorna um WebElement. Atualmente, isso só
acontece quando o seletor é uma expressão xpath e é sintaticamente inválido (ou seja, não é uma expressão xpath) ou a
expressão não seleciona WebElements (por exemplo, “count(//input)”).
7.1. Exceções 35
Machine Translated by Google
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Ocorre se o ID de sessão fornecido não estiver na lista de sessões ativas, o que significa que a sessão não existe ou não está
ativa.
exceção selenium.common.exceptions.InvalidSwitchToTargetException(msg:
Opcional[str]
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
exceção selenium.common.exceptions.MoveTargetOutOfBoundsException(msg:
Opcional[str]
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Lançado quando o destino fornecido ao método move() ActionsChains é inválido, ou seja, fora do documento.
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Isso pode ser causado pela chamada de uma operação na classe Alert() quando um alerta ainda não está na tela.
Nenhum, Opcional[str]
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Você pode verificar se o atributo existe no navegador específico em que está testando. Alguns navegadores podem ter nomes de
propriedade diferentes para a mesma propriedade. (.innerText do IE8 vs. Firefox .textContent)
Nenhum cookie correspondente ao nome de caminho fornecido foi encontrado entre os cookies associados do documento ativo do
contexto de navegação atual.
• O elemento pode ainda não estar na tela no momento da operação de localização (a página da Web ainda está sendo carregada).
Consulte selenium.webdriver.support.wait.WebDriverWait() para saber como escrever um wrapper de espera para aguardar a
exibição de um elemento.
7.1. Exceções 37
Machine Translated by Google
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Lançado ao tentar acessar a raiz de sombra de um elemento quando ele não possui uma raiz de sombra anexada.
Para localizar o conjunto atual de identificadores de janela ativos, você pode obter uma lista dos identificadores de janela ativos da seguinte
maneira:
imprimir driver.window_handles
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Nenhum, Opcional[str]
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
exceção selenium.common.exceptions.StaleElementReferenceException(msg:
Opcional[str]
= Nenhum,
tela:
Opcional[str]
= Nenhum,
pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
• Você não está mais na mesma página ou a página pode ter sido atualizada desde que o elemento foi localizado.
• O elemento pode ter sido removido e adicionado novamente à tela, desde que foi localizado. Como um elemento sendo
realocado. Isso pode acontecer normalmente com uma estrutura javascript quando os valores são atualizados e o nó é
reconstruído.
• O elemento pode estar dentro de um iframe ou outro contexto que foi atualizado.
=
Nenhum)
Bases: selenium.common.exceptions.WebDriverException
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
7.1. Exceções 39
Machine Translated by Google
exceção selenium.common.exceptions.UnexpectedAlertPresentException(msg:
Opcional[str]
=
Nenhum,
tela:
Opcional[str]
=
Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
=
Nenhum, alert_text:
Opcional[str]
=
Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Geralmente gerado quando um modal inesperado está impedindo o webdriver de executar comandos.
= Nenhum, pilha
vestígio:
Opcional[Sequência[str]]
= Nenhum)
Bases: selenium.common.exceptions.WebDriverException
Lançado quando uma classe de suporte não obteve um elemento da web esperado.
O comando solicitado corresponde a um URL conhecido, mas não corresponde a nenhum método para esse URL.
Opcional[Sequência[str]]
= Nenhum)
Bases: Exceção
A implementação ActionChains,
Bases: objeto
ActionChains são uma maneira de automatizar interações de baixo nível, como movimentos do mouse, ações do botão do mouse,
pressionamento de tecla e interações do menu de contexto. Isso é útil para realizar ações mais complexas, como passar o mouse e
arrastar e soltar.
Gerar ações do usuário. Quando você chama métodos para ações no objeto ActionChains, as ações são armazenadas em uma fila no
objeto ActionChains. Quando você chama perform(), os eventos são acionados na ordem em que são enfileirados.
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
ações = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
ações.perform()
De qualquer forma, as ações são executadas na ordem em que são chamadas, uma após a outra.
__init__(condutor, duração=250)
Cria um novo ActionChains.
argumentos
click(on_element=Nenhum)
Clica em um elemento.
argumentos
click_and_hold(on_element=Nenhum)
Mantém pressionado o botão esquerdo do mouse em um elemento.
argumentos
• on_element: O elemento para o mouse para baixo. Se Nenhum, clica na posição atual do mouse.
context_click(on_element=Nenhum)
argumentos
• on_element: O elemento para clicar no contexto. Se Nenhum, clica na posição atual do mouse.
double_click(on_element=Nenhum)
Clique duas vezes em um elemento.
argumentos
• on_element: O elemento para clicar duas vezes. Se Nenhum, clica na posição atual do mouse.
drag_and_drop(origem, destino)
Mantém pressionado o botão esquerdo do mouse no elemento de origem, move-se para o elemento de destino e solta
o botão do mouse.
argumentos
Mantém pressionado o botão esquerdo do mouse no elemento de origem, então move para o deslocamento de destino e libera
o botão do mouse.
argumentos
key_down(valor, elemento=Nenhum)
Envia apenas um pressionamento de tecla, sem soltá-la. Deve ser usado apenas com teclas modificadoras (Control, Alt e
Mudança).
argumentos
• value: A tecla modificadora a ser enviada. Os valores são definidos na classe Keys.
• elemento: O elemento para enviar as chaves. Se Nenhum, envia uma chave para o elemento em foco atual.
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.
ÿÿCONTROL).perform()
key_up(valor, elemento=Nenhum)
Libera uma tecla modificadora.
argumentos
• value: A tecla modificadora a ser enviada. Os valores são definidos na classe Keys.
• elemento: O elemento para enviar as chaves. Se Nenhum, envia uma chave para o elemento em foco atual.
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.
ÿÿCONTROL).perform()
move_by_offset(xoffset, yoffset)
Mover o mouse para um deslocamento da posição atual do mouse.
argumentos
• xoffset: deslocamento X para o qual mover, como um número inteiro positivo ou negativo.
move_to_element(to_element)
Mover o mouse para o meio de um elemento.
argumentos
Mova o mouse por um deslocamento do elemento especificado. Os deslocamentos são relativos ao canto superior esquerdo da
elemento.
argumentos
pausa(segundos)
Pausar todas as entradas pela duração especificada em segundos
executar()
Executa todas as ações armazenadas.
release(on_element=None)
Liberar um botão do mouse pressionado em um elemento.
argumentos
• on_element: O elemento para o mouse para cima. Se Nenhum, libera na posição atual do mouse.
reset_actions()
Limpa as ações que já estão armazenadas localmente e na extremidade remota
scroll(x: int, y: int, delta_x: int, delta_y: int, duração: int = 0, origem: str = 'viewport')
Envia informações de rolagem da roda para o navegador para serem processadas.
argumentos
• x: coordenada X inicial
• y: coordenada Y inicial
argumentos
• delta_x: Distância ao longo do eixo X para rolar usando a roda. Um valor negativo rola para a esquerda.
• delta_y: Distância ao longo do eixo Y para rolar usando a roda. Um valor negativo rola para cima.
Rola por quantidade fornecida com base em uma origem fornecida. A origem da rolagem é o centro de um elemento ou a parte
superior esquerda da viewport mais quaisquer deslocamentos. Se a origem for um elemento e o elemento não estiver na viewport, a
parte inferior do elemento será primeiro rolada para a parte inferior da viewport.
argumentos
• origin: Onde a rolagem se origina (viewport ou centro do elemento) mais os deslocamentos fornecidos.
• delta_x: Distância ao longo do eixo X para rolar usando a roda. Um valor negativo rola para a esquerda.
• delta_y: Distância ao longo do eixo Y para rolar usando a roda. Um valor negativo rola para cima.
scroll_to_element(elemento: selenium.webdriver.remote.webelement.WebElement)
Se o elemento estiver fora da viewport, rola a parte inferior do elemento até a parte inferior da viewport.
argumentos
send_keys(*keys_to_send)
Envia chaves para o elemento focado atual.
argumentos
• keys_to_send: As chaves a serem enviadas. As constantes de teclas modificadoras podem ser encontradas na classe 'Chaves'.
send_keys_to_element(elemento, *keys_to_send)
Envia chaves para um elemento.
argumentos
• keys_to_send: As chaves a serem enviadas. As constantes de teclas modificadoras podem ser encontradas na classe 'Chaves'.
7.3 Alertas
A implementação do Alerta.
classe selenium.webdriver.common.alert.Alert(driver)
Bases: objeto
Use esta classe para interagir com prompts de alerta. Ele contém métodos para descartar, aceitar, inserir e obter texto de prompts de alerta.
Alert(motorista).accept()
Alert(motorista).dismiss()
__init__(driver)
Cria um novo Alerta.
argumentos
aceitar()
Aceita o alerta disponível.
liberar()
Dispensa o alerta disponível.
send_keys(keysToSend)
Enviar Chaves para o Alerta.
argumentos
texto
Obtém o texto do Alert.
ADICIONAR = '\ue025'
ALT = '\ue00a'
ARROW_DOWN = '\ue015'
ARROW_LEFT = '\ue012'
ARROW_RIGHT = '\ue014'
ARROW_UP = '\ue013'
BACKSPACE = '\ue003'
BACK_SPACE = '\ue003'
CANCELAR = '\ue001'
LIMPAR = '\ue005'
COMANDO = '\ue03d'
CONTROL = '\ue009'
DECIMAL = '\ue028'
APAGAR = '\ue017'
DIVIDIR = '\ue029'
PARA BAIXO = '\ue015'
FIM = '\ue010'
ENTER = '\ue007'
IGUAL = '\ue019'
ESCAPE = '\ue00c'
F1 = '\ue031'
F10 = '\ue03a'
F11 = '\ue03b'
F12 = '\ue03c'
F2 = '\ue032'
F3 = '\ue033'
F4 = '\ue034'
F5 = '\ue035'
F6 = '\ue036'
F7 = '\ue037'
F8 = '\ue038'
F9 = '\ue039'
AJUDA = '\ue002'
HOME = '\ue011'
INSERIR = '\ue016'
ESQUERDA = '\ue012'
LEFT_ALT = '\ue00a'
LEFT_CONTROL = '\ue009'
LEFT_SHIFT = '\ue008'
META = '\ue03d'
MULTIPLICAR = '\ue024'
NULO = '\ue000'
NUMPAD0 = '\ue01a'
NUMPAD1 = '\ue01b'
NUMPAD2 = '\ue01c'
NUMPAD3 = '\ue01d'
NUMPAD4 = '\ue01e'
NUMPAD5 = '\ue01f'
NUMPAD6 = '\ue020'
NUMPAD7 = '\ue021'
NUMPAD8 = '\ue022'
NUMPAD9 = '\ue023'
PAGE_DOWN = '\ue00f'
PAGE_UP = '\ue00e'
PAUSA = '\ue00b'
RETORNAR = '\ue006'
DIREITA = '\ue014'
SEMÍCOLON = '\ue018'
SEPARADOR = '\ue026'
SHIFT = '\ue008'
ESPAÇO = '\ue00d'
SUBTRAIR = '\ue027'
TAB = '\ue004'
ZENKAKU_HANKAKU = '\ue040'
Estes são os atributos que podem ser usados para localizar elementos. Veja o capítulo Localizando Elementos para exemplos de uso.
A implementação Por.
ID = 'id'
NOME = 'nome'
XPATH = 'xpath'
Consulte a seção Usando o Selenium com WebDriver remoto para obter exemplos de uso dos recursos desejados.
classe selenium.webdriver.common.desired_capabilities.DesiredCapabilities
Bases: objeto
Use isso como ponto de partida para criar um objeto de recursos desejado para solicitar webdrivers remotos para
conectar ao servidor Selenium ou grade Selenium.
Exemplo de uso:
selenium_grid_url = "http://198.0.0.1:4444/wd/hub"
Nota: Sempre use '.copy()' no objeto DesiredCapabilities para evitar os efeitos colaterais de alterar a instância da
classe Global.
7.8 Procuração
A implementação do Proxy.
classe selenium.webdriver.common.proxy.Proxy(raw=None)
Bases: objeto
__init__(raw=Nenhum)
Cria um novo proxy.
argumentos
• raw: dados proxy brutos. Se Nenhum, os valores de classe padrão serão usados.
add_to_capabilities(capacidades)
Adiciona informações de proxy como recurso em recursos especificados.
argumentos
auto_detect Retorna
''
ftpProxy =
ftp_proxy
Retorna a configuração do proxy ftp.
''
httpProxy =
http_proxy
Retorna a configuração do proxy http.
''
noProxy =
no_proxy
Retorna a configuração noproxy.
''
proxyAutoconfigUrl =
proxy_autoconfig_url Retorna a
configuração de url de configuração automática do proxy.
proxy_type
Retorna o tipo de proxy como ProxyType.
meiasSenha = ''
''
meiasProxy =
meiasUsername = ''
meiaVersão = Nenhum
meias_senha Retorna
a configuração de senha do proxy meias.
meias_proxy
Retorna a configuração de proxy meias.
meias_usuário Retorna
a configuração de nome de usuário do proxy meias.
7.8. Proxy 49
Machine Translated by Google
meias_versão Retorna
a configuração da versão do proxy meias.
''
sslProxy =
ssl_proxy
Retorna a configuração do proxy https.
Cada tipo de proxy tem 2 propriedades: 'ff_value' é o valor da preferência de perfil do Firefox, 'string' é o id do tipo de proxy.
classmethod load(valor)
classe selenium.webdriver.common.proxy.ProxyTypeFactory
Bases: objeto
7.9 Utilitários
Os métodos Utils.
Preferimos o IPv4 para não alterar o comportamento das implementações anteriores apenas para IPv4 e porque alguns
drivers (por exemplo, FirefoxDriver) não suportam conexões IPv6.
Se o número da porta opcional for fornecido, apenas os IPs que escutam na porta fornecida serão considerados.
argumentos
Retorna Um único endereço IP, como uma string. Se algum endereço IPv4 for encontrado, um será retornado. Caso contrário,
se algum endereço IPv6 for encontrado, um será retornado. Se nenhum, nenhum será retornado.
selenium.webdriver.common.utils.free_port() ÿ int
Determina uma porta livre usando soquetes.
argumentos
selenium.webdriver.common.utils.is_url_connectable(port: Union[int, str]) ÿ bool Tenta se conectar ao servidor HTTP no caminho /status
e porta especificada para ver se ele responde com sucesso.
argumentos
selenium.webdriver.common.utils.join_host_port(host: str, porta: int) ÿ str Junta um nome de host e uma porta.
Esta é uma implementação mínima destinada a lidar com literais IPv6. Por exemplo, _join_host_port('::1', 80) == '[::1]:80'.
argumentos
7.10 Serviço
class selenium.webdriver.common.service.Service(executable: str, port: int = 0, log_file: Union[int, IO[Any]] = -3, env: Op tional[Mapping[Any,
Any]] = None , start_error_message: Opcional[str]
= Nenhum)
Bases: abc.ABC
A classe base abstrata para todos os objetos de serviço. Os serviços normalmente iniciam um programa filho em um novo processo como um
processo intermediário para se comunicar com um navegador.
Parâmetros
• port – Porta na qual o serviço será executado, o padrão é 0, onde o sistema operacional decidirá.
• log_file – (Opcional) descritor de arquivo (pos int) ou objeto de arquivo com um descritor de arquivo válido.
subprocess.PIPE e subprocess.DEVNULL também são valores válidos.
• env – (Opcional) Mapeamento de variáveis de ambiente para o novo processo, padrão para
os.environ.
__init__(executável: str, port: int = 0, log_file: Union[int, IO[Any]] = -3, env: Op tional[Mapping[Any, Any]] = None, start_error_message:
Optional[str] = None ) ÿ Nenhum
Inicializar auto. Consulte help(type(self)) para obter uma assinatura precisa.
7.10. Serviço 51
Machine Translated by Google
command_line_args() ÿ Lista[str]
Uma lista de argumentos do programa (excluindo o executável).
is_connectable() ÿ bool
Estabelece uma conexão de soquete para determinar se o serviço em execução na porta está acessível.
send_remote_shutdown_command() ÿ Nenhum
Despache uma solicitação HTTP para o endpoint de desligamento do serviço na tentativa de interrompê-lo.
Exceções
• WebDriverException : gerado quando não pode iniciar o serviço ou quando não pode se conectar
ao serviço
stop() ÿ Nenhum
Interrompe o serviço.
service_url
Obtém a url do serviço
A implementação do ApplicationCache.
classe selenium.webdriver.common.html5.application_cache.ApplicationCache(driver)
Bases: objeto
__init__(driver)
Cria um novo Cache de Aplicativo.
argumentos
VERIFICAÇÃO = 2
BAIXANDO = 3
IDLE = 1
OBSOLETO = 5
SEM CACHE = 0
UPDATE_READY = 4
status
Retorna um status atual do cache do aplicativo.
serviço=Nenhum,
sired_capabilities=Nenhum,
de
log_path=Nenhum, keep_alive=Verdadeiro)
Bases: selenium.webdriver.remote.webdriver.WebDriver
Com base na combinação e especificidade dos vários argumentos de palavras-chave, será construído um dicionário de recursos
que será passado para a extremidade remota.
Os argumentos de palavra-chave fornecidos a este construtor são auxiliares para permitir mais facilmente que as sessões do
Firefox WebDriver sejam personalizadas com diferentes opções. Eles são mapeados para um dicionário de capacidades que é
passado para a extremidade remota.
Como algumas das opções, como firefox_profile e options.profile são mutuamente exclusivas, a precedência é dada de quão
específica é a configuração. capacidades é o argumento de palavra-chave menos específico, seguido por opções, seguido por
firefox_binary e firefox_profile.
Na prática, isso significa que, se firefox_profile e options.profile estiverem definidos, a instância de perfil selecionada sempre
virá da variável mais específica. Nesse caso, seria firefox_profile. Isso fará com que options.profile seja ignorado porque é
considerado uma configuração menos específica do que o argumento de palavra-chave firefox_profile de nível superior. Da
mesma forma, se você especificou um recurso [“moz:firefoxOptions”][“perfil”]
String Base64, isso seria classificado abaixo de options.profile.
Parâmetros
• executável_path – obsoleto: caminho completo para substituir qual binário do geckodriver usar para o Firefox
47.0.1 e superior, cujo padrão é selecionar o binário do caminho do sistema.
• desejado_capabilities – obsoleto: alias de recursos. Em versões futuras desta biblioteca, isso substituirá
'capacidades'. Isso tornará a assinatura consistente com RemoteWebDriver.
contexto(contexto)
Define o contexto em que os comandos do Selenium estão sendo executados usando uma instrução with. O estado do
contexto no servidor é salvo antes de entrar no bloco e restaurado ao sair dele.
Parâmetros context – Context, pode ser uma das propriedades da classe CONTEXT_CHROME ou
CONTEXT_CONTENT.
Exemplo de uso:
get_full_page_screenshot_as_base64() ÿ str
Obtém a captura de tela completa do documento da janela atual como uma string codificada em base64 que é útil
em imagens incorporadas em HTML.
Uso
driver.get_full_page_screenshot_as_base64()
Salva uma captura de tela completa do documento da janela atual em um arquivo de imagem PNG. Retorna False se houver
algum IOError, senão retorna True. Use caminhos completos em seu nome de arquivo.
argumentos
• nome do arquivo: o caminho completo no qual você deseja salvar sua captura de tela. Isso deve terminar com um .png
extensão.
Uso
driver.get_full_page_screenshot_as_file('/Screenshots/foo.png')
Uso
driver.get_full_page_screenshot_as_png()
Retorna o identificador do addon instalado. Esse identificador pode ser usado posteriormente para desinstalar o complemento.
Uso
driver.install_addon('/caminho/para/firebug.xpi')
Salva uma captura de tela completa do documento da janela atual em um arquivo de imagem PNG. Retorna False se houver
algum IOError, senão retorna True. Use caminhos completos em seu nome de arquivo.
argumentos
• nome do arquivo: o caminho completo no qual você deseja salvar sua captura de tela. Isso deve terminar com um .png
extensão.
Uso
driver.save_full_page_screenshot('/Screenshots/foo.png')
set_context(contexto) ÿ Nenhum
desinstalar_addon(identificador) ÿ Nenhum
Desinstala o complemento do Firefox usando seu identificador.
Uso
driver.uninstall_addon('[email protected]')
CONTEXT_CHROME = 'cromo'
CONTEXT_CONTENT = 'conteúdo'
firefox_profile
classe selenium.webdriver.firefox.options.Log
Bases: objeto
__iniciar__()
Inicializar auto. Consulte help(type(self)) para obter uma assinatura precisa.
to_capabilities() ÿ dict
classe selenium.webdriver.firefox.options.Options
Bases: selenium.webdriver.common.options.ArgOptions
__iniciar__()
Inicializar auto. Consulte help(type(self)) para obter uma assinatura precisa.
to_capabilities() ÿ dict
Organiza as opções do Firefox para um objeto moz:firefoxOptions.
KEY = 'moz:firefoxOptions'
binário
Retorna a instância FirefoxBinary
local_binário
default_capabilities
Retorne os recursos mínimos necessários como um dicionário.
sem cabeça
preferências
perfil
classe selenium.webdriver.firefox.firefox_profile.FirefoxProfile(profile_directory=None)
Bases: objeto
__init__(profile_directory=Nenhum)
Inicializa uma nova instância de um perfil do Firefox
argumentos
• profile_directory: Diretório do perfil que você deseja usar. Se um diretório for passado, ele será
clonado e o diretório clonado será usado pelo driver quando instanciado. O padrão é Nenhum e
criará um novo diretório quando o objeto for criado.
add_extension(extension='webdriver.xpi')
atualizar_preferências()
ANONYMOUS_PROFILE_NAME = 'WEBDRIVER_ANONYMOUS_PROFILE'
DEFAULT_PREFERENCES = Nenhum
accept_untrusted_certs
assume_untrusted_cert_issuer
codificado
Uma cadeia de caracteres compactada e codificada em base64 do diretório de perfil para uso com o protocolo de conexão WebDriver JSON remoto
caminho
Obtém o diretório do perfil que está sendo usado no momento
porta
Obtém a porta em que o WebDriver está trabalhando
__init__(firefox_path=Nenhum, log_file=Nenhum)
Cria uma nova instância do binário do Firefox.
argumentos
• firefox_path - Caminho para o executável do Firefox. Por padrão, ele será detectado a partir do
locais padrão.
• log_file - Um objeto de arquivo para redirecionar a saída do processo firefox. Pode ser sys.stdout.
Observe que, com execução paralela, a saída não será síncrona. Por padrão, ele será redirecionado
para /dev/null.
add_command_line_options(*args)
matar()
Mate o navegador.
qual(fnome)
Retorna o caminho totalmente qualificado pesquisando o caminho do nome fornecido
NO_FOCUS_LIBRARY_NAME = 'x_ignore_nofocus.so'
exceção selenium.webdriver.firefox.extension_connection.ExtensionConnectionError
Bases: Exceção
limite=30)
Bases: selenium.webdriver.remote.remote_connection.RemoteConnection
conectar()
Conecta-se à extensão e recupera o ID da sessão.
classmethod connect_and_quit()
Conecta-se a um navegador em execução e sai imediatamente.
classmethod is_connectable ()
Tenta se conectar ao ramal, mas não recupera o contexto.
quit(sessionId=Nenhum)
Bases: selenium.webdriver.chromium.webdriver.ChromiumDriver
Controla o ChromeDriver e permite que você conduza o navegador. Você precisará baixar o executável do ChromeDriver em http://
chromedriver.storage.googleapis.com/index.html
Cria uma nova instância do driver chrome. Inicia o serviço e cria uma nova instância do driver chrome.
argumentos
• executable_path - Obsoleto: caminho para o executável. Se o padrão for usado, ele assume que o executável
está no $PATH
• port - Obsoleto: porta que você gostaria que o serviço fosse executado, se deixado como 0, uma porta livre será
encontrado.
• service - Objeto de serviço para lidar com o driver do navegador se você precisar passar detalhes extras
• desejado_capabilities - obsoleto: objeto de dicionário apenas com recursos não específicos do navegador,
como “proxy” ou “loggingPref”.
classe selenium.webdriver.chrome.options.Options
Bases: selenium.webdriver.chromium.options.ChromiumOptions
default_capabilities
Retorne os recursos mínimos necessários como um dicionário.
Bases: selenium.webdriver.chromium.service.ChromiumService
• port – Porta na qual o serviço será executado, o padrão é 0, onde o sistema operacional decidirá.
• env – (Opcional) Mapeamento de variáveis de ambiente para o novo processo, padrão para
os.environ.
A implementação do WebDriver.
classe selenium.webdriver.remote.webdriver.BaseWebDriver
Bases: objeto
Classe base abstrata para todos os subtipos de Webdriver. O ABC permite que implementações personalizadas do Webdriver sejam
registradas para que as verificações do tipo isinstance sejam bem-sucedidas.
= Nenhum)
Bases: selenium.webdriver.remote.webdriver.BaseWebDriver
Controla um navegador enviando comandos para um servidor remoto. Espera-se que este servidor esteja executando o protocolo de
conexão do driver da Web conforme definido em https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
Atributos
argumentos
add_cookie(cookie_dict) ÿ Nenhum
Adiciona um cookie à sua sessão atual.
argumentos
• cookie_dict: Um objeto de dicionário, com as chaves necessárias - “nome” e “valor”; chaves opcionais
- “caminho”, “domínio”, “seguro”, “httpOnly”, “expiry”, “sameSite”
Uso: driver.add_cookie({'name' : 'foo', 'value' : 'bar'}) driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : ' /'})
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure':True}) driver.add_cookie({'name': ' foo', 'value':
'bar', 'sameSite': 'Strict'})
add_virtual_authenticator(opções: selenium.webdriver.common.virtual_authenticator.VirtualAuthenticatorOptions)
ÿ Nenhum
Adiciona um autenticador virtual com as opções fornecidas.
Uso
driver.back()
bidi_connection()
close() ÿ Nenhum
Fecha a janela atual.
Uso
driver.close()
Uso
driver.delete_all_cookies()
Uso
driver.delete_cookie('meu_cookie')
argumentos
argumentos
Uso
execute_script(script, *args)
Executa JavaScript de forma síncrona na janela/quadro atual.
argumentos
Uso
driver.execute_script('return document.title;')
Exemplo:
argumentos
• args - Argumentos opcionais que são passados para a classe do detector de arquivo durante
instanciação.
Uso
Uso
Uso
driver.forward()
fullscreen_window() ÿ Nenhum
Invoca a operação de 'tela cheia' específica do gerenciador de janelas
Uso
motorista.get_cookie('meu_cookie')
get_cookies() ÿ Lista[dict]
Retorna um conjunto de dicionários, correspondentes aos cookies visíveis na sessão atual.
Uso
driver.get_cookies()
get_credentials() ÿ List[selenium.webdriver.common.virtual_authenticator.Credential]
Retorna a lista de credenciais de propriedade do autenticador.
get_log(log_type)
Obtém o log para um determinado tipo de log
argumentos
Uso
driver.get_log('navegador')
driver.get_log('driver') driver.get_log('cliente')
driver.get_log('servidor')
get_pinned_scripts() ÿ Lista[str]
get_screenshot_as_base64() ÿ str
Obtém a captura de tela da janela atual como uma string codificada em base64 que é útil em
imagens em HTML.
Uso
driver.get_screenshot_as_base64()
Salva uma captura de tela da janela atual em um arquivo de imagem PNG. Retorna False se houver algum IOError, senão
retorna True. Use caminhos completos em seu nome de arquivo.
argumentos
• nome do arquivo: o caminho completo no qual você deseja salvar sua captura de tela. Isso deve terminar com um .png
extensão.
Uso
driver.get_screenshot_as_file('/Screenshots/foo.png')
Uso
driver.get_screenshot_as_png()
Uso
driver.get_window_position()
get_window_rect() ÿ dict
Obtém as coordenadas x, y da janela, bem como a altura e a largura da janela atual.
Uso
driver.get_window_rect()
Uso
driver.get_window_size()
Define um tempo limite fixo para aguardar implicitamente a localização de um elemento ou a conclusão de um
comando. Este método só precisa ser chamado uma vez por sessão. Para definir o tempo limite para chamadas
para exe cute_async_script, consulte set_script_timeout.
argumentos
Uso
driver.implicitly_wait(30)
maximize_window() ÿ Nenhum
Maximiza a janela atual que o webdriver está usando
minimize_window() ÿ Nenhum
Invoca a operação 'minimizar' específica do gerenciador de janelas
print_page(print_options: Opcional[selenium.webdriver.common.print_page_options.PrintOptions]
= Nenhum) ÿ str
Obtém o PDF da página atual. O driver se esforça ao máximo para retornar um PDF com base nos parâmetros
fornecidos.
Uso
driver.quit()
Uso
driver.refresh()
remove_all_credentials() ÿ Nenhum
Remove todas as credenciais do autenticador.
remove_virtual_authenticator() ÿ Nenhum
Remove um autenticador virtual adicionado anteriormente. O autenticador não é mais válido após a remoção, portanto,
nenhum método pode ser chamado.
Salva uma captura de tela da janela atual em um arquivo de imagem PNG. Retorna False se houver algum IOError, senão
retorna True. Use caminhos completos em seu nome de arquivo.
argumentos
• nome do arquivo: o caminho completo no qual você deseja salvar sua captura de tela. Isso deve terminar com um .png
extensão.
Uso
driver.save_screenshot('/Screenshots/foo.png')
Defina o tempo de espera para que o carregamento da página seja concluído antes de lançar um erro.
argumentos
Uso
driver.set_page_load_timeout(30)
Defina a quantidade de tempo que o script deve esperar durante uma chamada execute_async_script antes de lançar
em um erro.
argumentos
Uso
driver.set_script_timeout(30)
argumentos
Uso
driver.set_window_position(0,0)
Uso
driver.set_window_rect(x=10, y=10)
driver.set_window_rect(width=100, height=200) driver.set_window_rect(x=10,
y=10, width=100, height=200)
argumentos
Uso
driver.set_window_size(800.600)
start_client()
Chamado antes de iniciar uma nova sessão. Este método pode ser substituído para definir o comportamento de inicialização personalizado.
argumentos
stop_client()
Chamado após a execução de um comando quit. Este método pode ser substituído para definir o comportamento de desligamento
personalizado.
application_cache
Retorna um objeto ApplicationCache para interagir com o cache do aplicativo do navegador
capacidades
retorna os recursos atuais dos drivers que estão sendo usados.
url_atual
Obtém a URL da página atual.
Uso
driver.current_url
current_window_handle Retorna
o identificador da janela atual.
Uso
driver.current_window_handle
capacidades_desejadas
retorna os recursos atuais desejados dos drivers que estão sendo usados
detector_de_arquivo
log_types
Obtém uma lista dos tipos de log disponíveis. Isso só funciona com navegadores compatíveis com w3c.
Uso
driver.log_types
móvel
nome
Retorna o nome do navegador subjacente para esta instância.
Uso
nome = motorista.nome
orientação
Obtém a orientação atual do dispositivo
Uso
orientação = motorista.orientação
fonte da página
Obtém a origem da página atual.
Uso
driver.page_source
troque para
devoluções
Uso
driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe
ÿÿ")[0])
driver.switch_to.parent_frame()
driver.switch_to.window('main')
limites de tempo
Obtenha todos os tempos limites que foram definidos na sessão atual
Uso
:: driver.timeouts
title
Retorna o título da página atual.
Uso
título = motorista.título
virtual_authenticator_id Retorna o id
do autenticador virtual.
window_handles
Retorna os identificadores de todas as janelas na sessão atual.
Uso
driver.window_handles
selenium.webdriver.remote.webdriver.create_matches(opções:
List[selenium.webdriver.common.options.BaseOptions]) ÿ
Dict[KT, VT]
selenium.webdriver.remote.webdriver.get_remote_connection(capacidades, mand_executor, keep_alive, com
eu
nore_local_proxy=False)
selenium.webdriver.remote.webdriver.import_cdp()
Classe base abstrata para WebElement. O ABC permitirá que tipos personalizados sejam registrados como um WebElement para passar nas
verificações de tipo.
Geralmente, todas as operações interessantes que interagem com um documento serão realizadas por meio dessa interface.
Todas as chamadas de método farão uma verificação de atualização para garantir que a referência do elemento ainda seja válida.
Isso determina essencialmente se o elemento ainda está anexado ao DOM. Se esse teste falhar, uma StaleElementReferenceException
será lançada e todas as chamadas futuras para essa instância falharão.
__init__(pai, id_)
Inicializar auto. Consulte help(type(self)) para obter uma assinatura precisa.
Uso
Uso
Este método primeiro tentará retornar o valor de uma propriedade com o nome fornecido. Se não existir uma propriedade
com esse nome, retorna o valor do atributo com o mesmo nome. Se não houver nenhum atributo com esse nome, None será
retornado.
Valores considerados verdadeiros, ou seja, iguais a “verdadeiro” ou “falso”, são retornados como booleanos. Todos os outros
valores diferentes de None são retornados como strings. Para atributos ou propriedades que não existem, None é retornado.
Para obter o valor exato do atributo ou propriedade, use os métodos get_dom_attribute() ou get_property() respectivamente.
argumentos
Exemplo:
get_dom_attribute(nome) ÿ str
Obtém o atributo fornecido do elemento. Ao contrário de get_attribute(), este método retorna apenas atributos declarados na
marcação HTML do elemento.
argumentos
Uso
text_length = target_element.get_dom_attribute("classe")
argumentos
Uso
text_length = target_element.get_property("text_length")
is_enabled() ÿ bool
Retorna se o elemento está ativado.
is_selected() ÿ bool
Retorna se o elemento está selecionado.
Pode ser usado para verificar se uma caixa de seleção ou botão de opção está selecionado.
Salva uma captura de tela do elemento atual em um arquivo de imagem PNG. Retorna False se houver algum IOError, senão
retorna True. Use caminhos completos em seu nome de arquivo.
argumentos
• nome do arquivo: o caminho completo no qual você deseja salvar sua captura de tela. Isso deve terminar com um .png
extensão.
Uso
element.screenshot('/Screenshots/foo.png')
send_keys(*valor) ÿ Nenhum
Simula a digitação no elemento.
argumentos
• value - Uma string para digitação ou configuração de campos de formulário. Para definir entradas de arquivo, isso pode ser um
caminho do arquivo local.
Use isso para enviar eventos de chave simples ou para preencher campos de formulário:
enviar()
Envia um formulário.
access_name
Retorna o nível ARIA do webelement atual
aria_role
Retorna a função ARIA do elemento da web atual
eu ia
Isto é principalmente para uso interno. Casos de uso simples, como verificar se 2 webelements se referem ao mesmo
elemento, podem ser feitos usando ==:
se elemento1 == elemento2:
print("Estes 2 são iguais")
location A
localização do elemento na tela renderizável.
location_once_scrolled_into_view
ESTA PROPRIEDADE PODE MUDAR SEM AVISO. Use isso para descobrir onde na tela um
elemento é para que possamos clicar nele. Este método deve fazer com que o elemento seja rolado para exibição.
Retorna a localização do canto superior esquerdo da tela ou None se o elemento não estiver visível.
parent
Referência interna à instância do WebDriver a partir da qual esse elemento foi encontrado.
retificar
Um dicionário com o tamanho e a localização do elemento.
screenshot_as_base64 Obtém a
captura de tela do elemento atual como uma string codificada em base64.
Uso
img_b64 = element.screenshot_as_base64
screenshot_as_png Obtém
a captura de tela do elemento atual como dados binários.
Uso
element_png = element.screenshot_as_png
shadow_root
Retorna uma raiz de sombra do elemento se houver um ou um erro. Só funciona a partir do Chromium 96 em diante.
Versões anteriores de navegadores baseados no Chromium lançarão uma exceção de declaração.
devoluções
• Objeto ShadowRoot ou
tag_name A
propriedade tagName deste elemento.
texto
O texto do elemento.
Embora essas constantes não tenham significado em si mesmas, elas são usadas para organizar comandos por meio de um
serviço que implementa o protocolo de conexão remota do WebDriver:
https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
ADD_COOKIE = 'adicionarCookie'
ADD_CREDENTIAL = 'adicionarCredencial'
ADD_VIRTUAL_AUTHENTICATOR = 'addVirtualAuthenticator'
CLEAR_ELEMENT = 'clearElement'
CLICK_ELEMENT = 'clickElement'
FECHAR = 'fechar'
CONTEXT_HANDLES = 'getContextHandles'
CURRENT_CONTEXT_HANDLE = 'getCurrentContextHandle'
DELETE_ALL_COOKIES = 'deleteAllCookies'
DELETE_COOKIE = 'excluirCookie'
DELETE_SESSION = 'deleteSession'
EXECUTE_ASYNC_SCRIPT = 'executeAsyncScript'
FIND_CHILD_ELEMENT = 'findChildElement'
FIND_CHILD_ELEMENTS = 'encontrarElementosFilhos'
FIND_ELEMENT = 'encontrarElemento'
FIND_ELEMENTS = 'encontrarElementos'
FIND_ELEMENTS_FROM_SHADOW_ROOT = 'findElementsFromShadowRoot'
FIND_ELEMENT_FROM_SHADOW_ROOT = 'findElementFromShadowRoot'
FULLSCREEN_WINDOW = 'fullscreenWindow'
GET = 'obter'
GET_ALL_COOKIES = 'getCookies'
GET_AVAILABLE_LOG_TYPES = 'getAvailableLogTypes'
GET_COOKIE = 'getCookie'
GET_CREDENTIALS = 'getCredentials'
GET_CURRENT_URL = 'getCurrentUrl'
GET_ELEMENT_ARIA_LABEL = 'getElementAriaLabel'
GET_ELEMENT_ARIA_ROLE = 'getElementAriaRole'
GET_ELEMENT_ATTRIBUTE = 'getElementAttribute'
GET_ELEMENT_PROPERTY = 'getElementProperty'
GET_ELEMENT_RECT = 'getElementRect'
GET_ELEMENT_TAG_NAME = 'getElementTagName'
GET_ELEMENT_TEXT = 'getElementText'
GET_ELEMENT_VALUE_OF_CSS_PROPERTY = 'getElementValueOfCssProperty'
GET_LOG = 'getLog'
GET_NETWORK_CONNECTION = 'getNetworkConnection'
GET_PAGE_SOURCE = 'getPageSource'
GET_SCREEN_ORIENTATION = 'getScreenOrientation'
GET_SHADOW_ROOT = 'getShadowRoot'
GET_TIMEOUTS = 'getTimeouts'
GET_TITLE = 'getTitle'
GET_WINDOW_RECT = 'getWindowRect'
GO_BACK = 'voltar'
IS_ELEMENT_ENABLED = 'isElementEnabled'
IS_ELEMENT_SELECTED = 'isElementSelected'
MINIMIZE_WINDOW = 'minimizeWindow'
NEW_SESSION = 'novaSessão'
NEW_WINDOW = 'newWindow'
PRINT_PAGE = 'imprimirPágina'
SAIR = 'sair'
ATUALIZAR = 'atualizar'
REMOVE_ALL_CREDENTIALS = 'removeAllCredentials'
REMOVE_CREDENTIAL = 'removeCredential'
REMOVE_VIRTUAL_AUTHENTICATOR = 'removeVirtualAuthenticator'
SEND_KEYS_TO_ELEMENT = 'sendKeysToElement'
SET_NETWORK_CONNECTION = 'setNetworkConnection'
SET_SCREEN_ORIENTATION = 'setScreenOrientation'
SET_TIMEOUTS = 'setTimeouts'
SET_USER_VERIFIED = 'setUserVerified'
SET_WINDOW_RECT = 'setWindowRect'
SWITCH_TO_CONTEXT = 'switchToContext'
SWITCH_TO_FRAME = 'switchToFrame'
SWITCH_TO_PARENT_FRAME = 'switchToParentFrame'
SWITCH_TO_WINDOW = 'switchToWindow'
UPLOAD_FILE = 'uploadArquivo'
W3C_ACCEPT_ALERT = 'w3cAcceptAlert'
W3C_ACTIONS = 'ações'
W3C_CLEAR_ACTIONS = 'clearActionState'
W3C_DISMISS_ALERT = 'w3cDismissAlert'
W3C_EXECUTE_SCRIPT = 'w3cExecuteScript'
W3C_EXECUTE_SCRIPT_ASYNC = 'w3cExecuteScriptAsync'
W3C_GET_ACTIVE_ELEMENT = 'w3cGetActiveElement'
W3C_GET_ALERT_TEXT = 'w3cGetAlertText'
W3C_GET_CURRENT_WINDOW_HANDLE = 'w3cGetCurrentWindowHandle'
W3C_GET_WINDOW_HANDLES = 'w3cGetWindowHandles'
W3C_MAXIMIZE_WINDOW = 'w3cMaximizeWindow'
W3C_SET_ALERT_VALUE = 'w3cSetAlertValue'
classe selenium.webdriver.remote.errorhandler.ErrorCode
Bases: objeto
argumentos
classe ConnectionType(máscara)
Bases: objeto
__init__(máscara)
Inicializar auto. Consulte help(type(self)) para obter uma assinatura precisa.
modo avião
dados
Wi-fi
__init__(driver)
Inicializar auto. Consulte help(type(self)) para obter uma assinatura precisa.
set_network_connection(rede)
Defina a conexão de rede para o dispositivo remoto.
driver.mobile.set_network_connection(driver.mobile.AIRPLANE_MODE)
contexto
retorna o contexto atual (Native ou WebView).
contextos
retorna uma lista de contextos disponíveis
conexão de rede
fechar()
Limpe os recursos quando terminar com o remote_connection
execute(comando, parâmetros)
Envie um comando para o servidor remoto.
Quaisquer substituições de caminho necessárias para a URL mapeada para o comando devem ser incluídas nos parâmetros do
comando.
argumentos
• params - Um dicionário de parâmetros nomeados para enviar com o comando como carga de pagamento JSON.
classmethod get_certificate_bundle_path()
Retorna Caminhos do certificado codificado em .pem para verificar a conexão com o executor do comando
argumentos
classmethod get_timeout()
Retorna o valor do Timeout em segundos para todas as requisições http feitas à Conexão Remota
classmethod reset_timeout()
Redefina o tempo limite da solicitação http para socket._GLOBAL_DEFAULT_TIMEOUT
classmethod set_certificate_bundle_path(path)
Defina o caminho para o pacote de certificados para verificar a conexão com o executor do comando. Também pode ser definido como Nenhum
para desabilitar a validação do certificado.
argumentos
classmethod set_timeout(timeout)
Substituir o tempo limite padrão
argumentos
browser_name = Nenhum
Bases: selenium.webdriver.remote.webdriver.WebDriver
argumentos
• executable_path - Obsoleto: caminho para o executável. Se o padrão for usado, ele assume que o executável está
no $PATH
• port - Obsoleto: porta que você gostaria que o serviço fosse executado, se deixado como 0, uma porta livre será
encontrado.
• timeout - obsoleto: não é mais usado, mantido para compatibilidade com versões anteriores
• log_level - Obsoleto: nível de log que você gostaria que o serviço executasse.
• desejado_capabilities - Obsoleto: alias de recursos; isso fará com que a assinatura con
consistente com RemoteWebDriver.
create_options() ÿ selenium.webdriver.ie.options.Options
Uso
driver.quit()
Bases: selenium.webdriver.remote.webdriver.WebDriver
argumentos
• porta - A porta na qual o serviço safaridriver deve escutar novas conexões. Se zero,
uma porta livre será encontrada.
• executable_path - Caminho para um executável de driver de safari personalizado a ser usado. Se ausente, /usr/
bin/safaridriver é usado.
• reuse_service - Se True, não gera uma instância do safaridriver; em vez disso, conecte-se a um já
serviço em execução que foi iniciado externamente.
• desejado_capabilities: objeto de dicionário com recursos desejados (pode ser usado para fornecer
vários interruptores do Safari).
• service - Objeto de serviço para lidar com o driver do navegador se você precisar passar detalhes extras
depurar()
get_permission(permissão)
desistir()
Fecha o navegador e encerra o executável do SafariDriver que é iniciado ao iniciar o SafariDriver
set_permission(permissão, valor)
Uma classe de serviço que é responsável por iniciar e parar o safaridriver Isso é suportado apenas no MAC OSX.
Parâmetros
• port – Porta na qual o serviço será executado, o padrão é 0, onde o sistema operacional decidirá.
• quiet – Suprime driver stdout & stderr, redireciona para os.devnull se habilitado.
• env – (Opcional) Mapeamento de variáveis de ambiente para o novo processo, padrão para
os.environ.
command_line_args() ÿ Lista[str]
Uma lista de argumentos do programa (excluindo o executável).
service_url
Obtém a url do Serviço SafariDriver
classe selenium.webdriver.support.select.Select(webelement)
Bases: objeto
__init__(webelement) ÿ Nenhum
Construtor. É feita uma verificação de que o elemento fornecido é, de fato, uma tag SELECT. Se não for, uma
UnexpectedTagNameException será lançada.
argumentos
Select(driver.find_element(By.TAG_NAME, “select”)).select_by_index(2)
deselect_all() ÿ Nenhum
Limpa todas as entradas selecionadas. Isso só é válido quando o SELECT suporta várias seleções. lança NotImplementedError
Se o SELECT não suportar múltiplas seleções
desmarcar_por_index(índice)
Desmarque a opção no índice fornecido. Isso é feito examinando o atributo “index” de um elemento, e não apenas contando.
argumentos
desmarcar_por_valor(valor)
Desmarque todas as opções que têm um valor correspondente ao argumento. Ou seja, quando dado “foo” isso desmarcaria uma
opção como:
<option value=”foo”>Barra</option>
argumentos
deselect_by_visible_text(texto)
Desmarque todas as opções que exibem o texto correspondente ao argumento. Ou seja, quando dado “Bar” isso desmarcaria
uma opção como:
<option value=”foo”>Barra</option>
argumentos
select_by_index(índice)
Selecione a opção no índice fornecido. Isso é feito examinando o atributo “index” de um elemento, e não apenas contando.
argumentos
select_by_value(valor)
Selecione todas as opções que tenham um valor correspondente ao argumento. Ou seja, quando dado “foo” isso selecionaria
uma opção como:
<option value=”foo”>Barra</option>
argumentos
select_by_visible_text(texto)
Selecione todas as opções que exibem o texto correspondente ao argumento. Ou seja, quando dado “Bar” isso selecionaria uma
opção como:
<option value=”foo”>Barra</option>
argumentos
all_selected_options
Retorna uma lista de todas as opções selecionadas pertencentes a esta tag selecionada
first_selected_option
A primeira opção selecionada nesta tag de seleção (ou a opção atualmente selecionada em uma seleção normal)
opções
Retorna uma lista de todas as opções pertencentes a esta tag selecionada
argumentos
Exemplo:
Parâmetros
• método – callable(WebDriver)
Parâmetros
• método – callable(WebDriver)
Retorna o resultado da última chamada ao método, ou True se o método gerou um dos ignorados
exceções
Exemplo:
print(Color.from_string('#00ff33').rgba)
print(Color.from_string('rgb(1, 255, 3)').hex)
print(Color.from_string('blue').rgba)
hexadecimal
rgb
rgba
classe selenium.webdriver.support.event_firing_webdriver.EventFiringWebDriver(driver:
se
o
nium.webdriver.rem
event_listener:
se
le
nium.webdriver.sup
Bases: objeto
Um wrapper em torno de uma instância arbitrária do WebDriver que suporta eventos de disparo
nium.webdriver.support.abstract_event_listener.AbstractEventListener) ÿ Nenhum
Cria uma nova instância do EventFiringWebDriver
argumentos
Exemplo:
classe MyListener(AbstractEventListener):
def before_navigate_to(self, url, driver):
print("Antes de navegar para %s" % url) def
after_navigate_to(self, url, driver): print("Depois de navegar para
%s" % url)
voltar() ÿ Nenhum
fechar () ÿ Nenhum
execute_async_script(script, *args)
execute_script(script, *args)
forward() ÿ Nenhum
quit() ÿ Nenhum
driver_envolvido
Retorna a instância do WebDriver agrupada por este EventsFiringWebDriver
classe selenium.webdriver.support.event_firing_webdriver.EventFiringWebElement(webelement:
se
le
nium.webdriver.re
ef_driver:
se
le
nium.webdriver.su
Bases: objeto
”
Um wrapper em torno da instância WebElement que suporta eventos de disparo
clear() ÿ Nenhum
click() ÿ Nenhum
send_keys(*valor) ÿ Nenhum
wrap_element
Retorna o WebElement agrupado por esta instância EventFiringWebElement
classe selenium.webdriver.support.abstract_event_listener.AbstractEventListener
Bases: objeto
after_close(driver) ÿ Nenhum
after_navigate_back(driver) ÿ Nenhum
after_navigate_forward(driver) ÿ Nenhum
after_quit(driver) ÿ Nenhum
before_close(driver) ÿ Nenhum
before_navigate_back(driver) ÿ Nenhum
before_navigate_forward(driver) ÿ Nenhum
before_quit(driver) ÿ Nenhum
selenium.webdriver.support.expected_conditions.alert_is_present()
selenium.webdriver.support.expected_conditions.all_of(*expected_conditions)
Uma expectativa de que todas as várias condições esperadas são verdadeiras. Equivalente a um 'E' lógico. Retorna: Quando qualquer
ExpectedCondition não for atendida: False. Quando todas as ExpectedConditions forem atendidas: Uma lista com o valor de retorno
de cada condição esperada.
selenium.webdriver.support.expected_conditions.any_of(*expected_conditions)
Uma expectativa de que qualquer uma das várias condições esperadas seja verdadeira. Equivalente a um 'OU' lógico. Retorna os resultados da
primeira condição correspondente, ou False se nenhum corresponder.
selenium.webdriver.support.expected_conditions.element_attribute_to_include(localizador,
no
tributo_)
Uma expectativa para verificar se o atributo fornecido está incluído no elemento especificado. localizador, atributo
selenium.webdriver.support.expected_conditions.element_located_selection_state_to_be(localizador, is_selec
Uma expectativa para localizar um elemento e verificar se o estado de seleção especificado está naquele estado. locator é uma tupla
de (by, path) is_selected é um booleano
selenium.webdriver.support.expected_conditions.element_located_to_be_selected(locator)
Uma expectativa para o elemento a ser localizado é selecionada. localizador é uma tupla de (by, path)
selenium.webdriver.support.expected_conditions.element_selection_state_to_be(element, is_selected)
Uma expectativa para verificar se o elemento fornecido está selecionado. O elemento é o objeto WebElement is_selected é um
booleano.
selenium.webdriver.support.expected_conditions.element_to_be_clickable(mark)
Uma expectativa para verificar um elemento é visível e habilitada de forma que você possa clicar nela.
selenium.webdriver.support.expected_conditions.element_to_be_selected(element)
Uma expectativa para verificar a seleção é selecionada. elemento é objeto WebElement
selenium.webdriver.support.expected_conditions.invisibility_of_element(element)
Uma expectativa para verificar se um elemento é invisível ou não está presente no DOM.
selenium.webdriver.support.expected_conditions.invisibility_of_element_located(locator)
Uma expectativa para verificar se um elemento é invisível ou não está presente no DOM.
selenium.webdriver.support.expected_conditions.new_window_is_opened(current_handles)
Uma expectativa de que uma nova janela será aberta e terá o número de identificadores de janelas aumentado
selenium.webdriver.support.expected_conditions.none_of(*expected_conditions)
Uma expectativa de que nenhuma de 1 ou várias condições esperadas seja verdadeira. Equivalente a um 'NÃO-OU' lógico. Retorna
um Booleano
selenium.webdriver.support.expected_conditions.number_of_windows_to_be(num_windows)
Uma expectativa de que o número de janelas seja um determinado valor.
selenium.webdriver.support.expected_conditions.presence_of_all_elements_located(locator)
Uma expectativa para verificar se há pelo menos um elemento presente em uma página da web. localizador é usado para encontrar o
elemento retorna a lista de WebElements uma vez que eles são localizados
selenium.webdriver.support.expected_conditions.presence_of_element_located(locator)
Uma expectativa para verificar se um elemento está presente no DOM de uma página. Isso não significa necessariamente
que o elemento esteja visível. localizador - usado para encontrar o elemento retorna o WebElement uma vez localizado
selenium.webdriver.support.expected_conditions.staleness_of(element)
Aguarde até que um elemento não esteja mais anexado ao DOM. element é o elemento pelo qual esperar. retorna False se o
elemento ainda estiver anexado ao DOM, true caso contrário.
selenium.webdriver.support.expected_conditions.text_to_be_present_in_element(localizador,
texto_)
Uma expectativa para verificar se o texto fornecido está presente no elemento especificado. localizador, texto
selenium.webdriver.support.expected_conditions.text_to_be_present_in_element_attribute(local
no
tribo
texto_
Uma expectativa para verificar se o texto fornecido está presente no atributo do elemento. localizador, atributo, texto
selenium.webdriver.support.expected_conditions.text_to_be_present_in_element_value(localizador,
texto_)
Uma expectativa para verificar se o texto fornecido está presente no valor do elemento. localizador, texto
selenium.webdriver.support.expected_conditions.title_contains(title: str)
Uma expectativa para verificar se o título contém uma substring com distinção entre maiúsculas e minúsculas. title é o fragmento do título
esperado retorna True quando o título corresponder, False caso contrário
selenium.webdriver.support.expected_conditions.title_is(title: str)
Uma expectativa para verificar o título de uma página. title é o título esperado, que deve ser uma correspondência exata retorna
True se o título corresponder, false caso contrário.
selenium.webdriver.support.expected_conditions.url_changes(url: str)
Uma expectativa para verificar o URL atual. url é a url esperada, que não deve ser uma correspondência exata, retorna True
se a url for diferente, false caso contrário.
selenium.webdriver.support.expected_conditions.url_contains(url: str)
Uma expectativa para verificar se o URL atual contém uma substring que diferencia maiúsculas de minúsculas. url é o fragmento de
url esperado, retorna True quando o url corresponder, False caso contrário
selenium.webdriver.support.expected_conditions.url_matches(padrão: str)
Uma expectativa para verificar o URL atual. pattern é o padrão esperado, que deve ser uma correspondência exata retorna
True se o URL corresponder, false caso contrário.
selenium.webdriver.support.expected_conditions.url_to_be(url: str)
Uma expectativa para verificar o URL atual. url é a url esperada, que deve ser uma correspondência exata retorna True se a
url corresponder, caso contrário, false.
selenium.webdriver.support.expected_conditions.visibility_of(element)
Uma expectativa para verificar se um elemento, conhecido por estar presente no DOM de uma página, está visível. Visibilidade
significa que o elemento não é apenas exibido, mas também tem altura e largura maiores que 0. elemento é o WebElement
retorna o (mesmo) WebElement uma vez visível
selenium.webdriver.support.expected_conditions.visibility_of_all_elements_located(locator)
Uma expectativa para verificar se todos os elementos estão presentes no DOM de uma página e visíveis. Visibilidade significa
que os elementos não são apenas exibidos, mas também têm altura e largura maiores que 0. localizador - usado para
localizar os elementos retorna a lista de WebElements uma vez que eles são localizados e visíveis
selenium.webdriver.support.expected_conditions.visibility_of_any_elements_located(locator)
Uma expectativa para verificar se há pelo menos um elemento visível em uma página da web. localizador é usado para encontrar o
elemento retorna a lista de WebElements uma vez que eles são localizados
selenium.webdriver.support.expected_conditions.visibility_of_element_located(locator)
Uma expectativa para verificar se um elemento está presente no DOM de uma página e visível. Visibilidade significa que
o elemento não é apenas exibido, mas também tem altura e largura maiores que 0. localizador - usado para localizar o
elemento retorna o WebElement assim que for localizado e visível
CAPÍTULO 8
descompacte chromedriver_linux64.zip
Você deve ver um executável do chromedriver. Agora você pode criar uma instância do Chrome WebDriver assim:
driver = webdriver.Chrome(executable_path="/caminho/para/chromedriver")
Ref: http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver
O Selenium delega as consultas XPath para o próprio mecanismo XPath do navegador, portanto, o Selenium oferece suporte a XPath para
tudo o que o navegador suporta. Em navegadores que não possuem mecanismos XPath nativos (IE 6,7,8), o Selenium oferece suporte
apenas a XPath 1.0.
Ref: http://blog.varunin.com/2011/08/scrolling-on-pages-using-selenium.html
Você pode usar o método execute_script para executar javascript na página carregada. Assim, você pode chamar a API JavaScript para
rolar até o final ou qualquer outra posição de uma página.
89
Machine Translated by Google
Aqui está um exemplo para rolar para a parte inferior de uma página:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
a janela objeto no DOM tem um scrollTo para rolar para qualquer posição de uma janela aberta. A altura de rolagem é uma propriedade comum
a todos os elementos. O document.body.scrollHeight fornecerá a altura de todo o corpo da página.
Ref: http://stackoverflow.com/questions/1176348/access-to-file-download-dialog-in-firefox
Ref: http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/
O primeiro passo é identificar o tipo de arquivo que você deseja salvar automaticamente.
Para identificar o tipo de conteúdo que você deseja baixar automaticamente, você pode usar o curl:
Outra maneira de encontrar o tipo de conteúdo é usando as solicitações módulo, você pode usá-lo assim:
importar solicitações
content_type = requests.head('http://www.python.org').headers['content-type'] print(content_type)
Depois que o tipo de conteúdo for identificado, você poderá usá-lo para definir a preferência de perfil do firefox: browser.helperApps.
neverAsk.saveToDisk
import os
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.download.dir",
os.getcwd()) fp. set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream ÿÿ")
A opção browser.download.dir especifica o diretório onde você deseja fazer download dos arquivos.
Selecione o elemento <input type="file"> e chame o método send_keys() passando o caminho do arquivo, seja o caminho relativo ao script de
teste ou um caminho absoluto. Lembre-se das diferenças nos nomes de caminho entre os sistemas Windows e Unix.
Primeiro baixe o arquivo Firebug XPI, depois chame o método add_extension disponível para o perfil do firefox:
fp = webdriver.FirefoxProfile()
fp.add_extension(extension='firebug-1.8.4.xpi')
fp.set_preference("extensions.firebug.currentVersion", "1.8.4") #Evite tela de inicialização navegador = webdriver.Firefox(firefox_profile=fp)
CAPÍTULO 9
índices e tabelas
• genindex
• modindex
• procurar
93
Machine Translated by Google
s selenium.webdriver.support.abstract_event_listener,
85
selenium.common.exceptions, 32
selenium.webdriver.chrome.options, 59 selenium.webdriver.support.color, 83
selenium.webdriver.chrome.service, 59 selenium.webdriver.support.event_firing_webdriver,
selenium.webdriver.chrome.webdriver, 58 83
selenium.webdriver.support.expected_conditions, selenium.webdriver.common.action_chains,
85
41 selenium.webdriver.common.alert, 44 selenium.webdriver.support.select, 80
selenium.webdriver.common.by, 47 selenium.webdriver.support.wait, 82
selenium.webdriver.common.desired_capabilities,
48
selenium.webdriver.common.html5.application_cache,
52
selenium.webdriver.common.keys, 45
selenium.webdriver.common.proxy, 48
selenium.webdriver.common.service, 51
selenium.webdriver.common.utils, 50
selenium.webdriver.firefox.extension_connection,
57
selenium.webdriver.firefox.firefox_binary,
57
selenium.webdriver.firefox.firefox_profile,
56
selenium.webdriver.firefox.options, 55
selenium.webdriver.firefox.webdriver,
53 selenium.webdriver.ie.webdriver, 78
selenium.webdriver.remote.command, 72
selenium.webdriver.remote.errorhandler,
74
selenium.webdriver.remote.mobile, 75
selenium.webdriver.remote.remote_connection,
76
selenium.webdriver.remote.utils, 77
selenium.webdriver.remote.webdriver, 59
selenium.webdriver.remote.webelement,
68
selenium.webdriver.safari.service, 80
selenium.webdriver.safari.webdriver, 79
95
Machine Translated by Google
Índice
em selecionar
nium.webdriver.firefox.firefox_profile.FirefoxProfile attribute), 56
__init__()atributo
method), 55 nium.webdriver.remote.webelement.WebElement __init__() (selenium.webdriver.firefox. (selenium.webdriver.firefox.options.Options access_name
webdriver.WebDriver), método 71 ), 53 ActionChains
__init__() (método selenium.webdriver.ie.webdriver.WebDriver), 78 (selecionar
(classe em selecionar
nium.webdriver.common.action_chains), 41
__init__() (selenium.webdriver.remote.mobile.Mobile ADD (atributo
selenium.webdriver.common.keys.Keys),
(selenium.webdriver.remote.mobile.Mobile.ConnectionType método),
add_command_line_options() método), 75 76 45 __init__()
nium.webdriver.firefox.firefox_binary.FirefoxBinary __init__()
(método selenium.webdriver.remote.remote_connection.RemoteConnection), 57 método), 76
(selecionar
97
Machine Translated by Google
(sele
(selecionar nium.webdriver.remote.webdriver.WebDriver
nium.webdriver.support.abstract_event_listener.AbstractEventListener attribute),
nium.webdriver.common.html5.application_cache),
66 method), 85 (class ApplicationCache
after_click() 52 nium.webdriver. support.abstract_event_listener.AbstractEventListener method), 85 aria_role
(selenium.webdriver.remote.webelement.WebElement em
attribute), 71 selecionar
nium.webdriver.support.abstract_event_listener.AbstractEventListener ARROW_DOWN (selenium.webdriver.common.keys.Keys
(selecionar after_close() method), 85 atributo), 45
ARROW_LEFT (selenium.webdriver.common.keys.Keys
after_execute_script() nium.webdriver.support.abstract_event_listener.AbstractEventListener atributo), 45 método), 85 ARROW_RIGHT
(selenium.webdriver.common.keys.Keys atributo), 45 after_find()ARROW_UP
nium.webdriver.support.abstract_event_listener.AbstractEventListener
(selenium.webdriver.common.keys.Keys at method), 85 tributo), 45
(selecionar after_navigate_back() assert_process_still_running()
(selecionar
(selecionar
(selecionar (selecionar
(selecionar
no B
back() (selenium.webdriver.remote.webdriver.WebDriver
98 Índice
Machine Translated by Google
(selenium.webdriver.common.desired_capabilities.DesiredCapabi (atributo de
ium.webdriver.remote.command.Command
(selenium.webdriver.remote.webelement.WebElement em selecionar
before_execute_script()(selenium.webdriver.common.action_chains.ActionChains
attribute),method),
nium.webdriver.support.abstract_event_listener.AbstractEventListener 72 nium.webdriver.support.abstract_event_listener.AbstractEventListener click()
69 method), 85 click() (selenium.webdriver.support.event_firing_webdriver.EventFirin
method), 85 method), 41 before_find() click ()
method), 85 before_navigate_back()
(selecionar
(selecionar
(selecionar
(selecionar
(selecionar
(selecionar
remote.remote_connection.RemoteConnecti before_quit()
(selenium.webdriver.remote.webdriver.WebDriver method),nium.webdriver.support.abstract_event_listener.AbstractEventListener
61 bidi_connection() close() (selenium .webdriver.support.event_firing_webdriver.EventFirin
method), 76 method), 85
method),
close() 84 Color (classe em
(selecionar
(selecionar
(sele
nium.webdriver.remote.webdriver.WebDriver method), 61
(selecionar nium.webdriver.remote.command), 72
method), 80
C
CANCELAR (selenium.webdriver.common.keys.Keys no tributo), 45 connect() (selenium.webdriver.firefox.extension_connection.Extension method), 58
Índice 99
Machine Translated by Google
context_click() nium.webdriver.firefox.webdriver.WebDriver), 55
(selecionar
método nium.webdriver.common.action_chains.ActionChains), 42 72
CONTEXT_CONTENT delete_all_cookies() nium.webdriver.remote.webdriver.WebDriver method),
(sele
61
(sele DELETE_COOKIE nium.webdriver.remote.command.Command
nium.webdriver.remote.webdriver), 68
criar_opções() (selecionar
nium.webdriver.ie.webdriver.WebDriver method), 78
(selenium.webdriver.remote.webdriver.WebDriver (selecione o
atributo desejado_capabilities), 67 atributo nium.webdriver.remote.webdriver.WebDriver), 67 current_window_handle DesiredCapabilities
nium.webdriver.common.desired_capabilities), 48 ( classe sele
67
atributo), 46
46
default_capabilities (selecionar
100 Índice
Machine Translated by Google
nium.webdriver.common.action_chains.ActionChains), 42 dump_json()
(selecionar codificado
(selenium.webdriver.firefox.firefox_profile.FirefoxProfile
attribute), 56 END (selenium atributo .webdriver.common.keys.Keys),
(no módulo selecionar
nium.webdriver.remote.utils), 77
46
E ENTER (selenium.webdriver.common.keys.Keys no atributo), 46
(selenium.webdriver.common.desired_capabilities.DesiredCapabilities EQUALSEDGE
(selenium.webdriver.common.keys.Keys no atributo),
48 tributo), 46 element_attribute_to_include()
ErrorCode
módulo sele nium.webdriver.support.expected_conditions), 86 (no (classe em selecionar
nium.webdriver.remote.errorhandler), 74
ErrorHandler (classe em selecionar
ELEMENT_CLICK_INTERCEPTED (selecionar
nium.webdriver.remote.errorhandler), 75
atributo nium.webdriver.remote.errorhandler.ErrorCode), ESCAPE (selenium.webdriver.common.keys.Keys no tributo),
74 46 EventFiringWebDriver (classe em
ELEMENT_IS_NOT_SELECTABLE (selecionar nium.webdriver.support.event_firing_webdriver), 83 selecionar
nium.webdriver.support.expected_conditions), 86
(sele
ELEMENT_NOT_INTERACTABLE nium.webdriver.remote.command.Command
(selecione o atributo attribute), 72 (sele execute_async_script()
nium.webdriver.remote.errorhandler.ErrorCode), 74 nium.webdriver.remote.webdriver.WebDriver method), 61
(selecione ELEMENT_NOT_VISIBLE atributo execute_async_script()
nium.webdriver.remote.errorhandler.ErrorCode), 74
ELEMENT_SCREENSHOT (sele
(sele nium.webdriver.support.event_firing_webdriver.EventFiringWeb method),
nium.webdriver.remote.command.Command 84 execute_script()
attribute), 72 element_selection_state_to_be() (no
módulo sele nium.webdriver.support.expected_conditions), 86 (selecione nium.webdriver.remote.webdriver.WebDriver
method), 62
execute_script() (selecionar
nium.webdriver.support.event_firing_webdriver.EventFiringWeb method),
element_to_be_clickable() (no módulo sele 84 ExtensionConnection (classe sele
nium.webdriver.support.expected_conditions), 86 nium.webdriver.firefox.extension_connection), 57 em
Índice 101
Machine Translated by Google
46
F2 (atributo selenium.webdriver.common.keys.Keys), 46 F3 (atributo
selenium.webdriver.common.keys.Keys), 46 F4 (atributo FIND_ELEMENTS_FROM_SHADOW_ROOT (sele
selenium.webdriver.common.keys.Keys), 46 F5 (atributo nium.webdriver.remote.command.Command attribute), 72
selenium.webdriver .common.keys.Keys attribute), 46 F6 FIREFOX
(selenium.webdriver.common.keys.Keys attribute), 46 F7 (selenium.webdriver.common.desired_capabilities.DesiredCapa attribute), 48 (sele
(selenium.webdriver.common.keys.Keys attribute), 46 F8 firefox_profile nium.webdriver.firefox.webdriver.WebDriver attribute), 55 (classe
(selenium.webdriver.common.keys. Keys attribute), 46 F9 nium .webdriver.firefox.firefox_binary), 57 (classe FirefoxProfile FirefoxBinary
(selenium.webdriver.common.keys.Keys attribute), 46 (sele file_detector nium.webdriver.firefox.firefox_profile), 56 first_selected_option (sele
nium.webdriver.remote.webdriver.WebDriver attribute), 67 nium.webdriver.support.select.Select attribute), 82
file_detector_context() em selecionar
(sele em selecionar
nium.webdriver.remote.webdriver.WebDriver method), 62
FIND_CHILD_ELEMENT
(selecione o atributo
nium.webdriver.remote.command.Command), 72 forward() (método selenium.webdriver.remote.webdriver.WebDriver), 62
(selecione o atributo FIND_CHILD_ELEMENTS forward() (método
nium.webdriver.remote.command.Command), 72 selenium.webdriver.support.event_firing_webdriver.EventFi), 84
frame_to_be_available_and_switch_to_it()
find_connectable_ip() (no módulo sele
nium.webdriver.common.utils), 50 módulo selecionar
FIND_ELEMENT nium.webdriver.remote.command.Command),
(selecione o atributo
72 (em nium.webdriver.support.expected_conditions), 86
(no módulo (selecione nium.webdriver.common.utils), 50
find_element() nium.webdriver.remote. webdriver.WebDriver from_string()
Porto Livre()method), 62 nium.webdriver.support.color.Color selecionar
(selecionar
G
GET (selenium.webdriver.remote.command.Command em
homenagem), 72
get() (selenium.webdriver.remote.webdriver.WebDriver
método), 63
método), 62 get() (método selenium.webdriver.support.event_firing_webdriver.EventFiringW), 84
find_elements() método (selecionar
GET_ALL_COOKIES
nium.webdriver.remote.webelement.WebElement), 69
find_elements() (selecione o atributo
(selecionar
nium.webdriver.remote.command.Command), 72
102 Índice
Machine Translated by Google
GET_COOKIE (selenium.webdriver.remote.command.Command
attribute), 72 get_cookie()
(sele
nium.webdriver.remote.webdriver.WebDriver (sele
method), 63 (sele get_cookies() nium.webdriver.remote.command.Command
nium.webdriver.remote.webdriver.WebDriver method), 63 attribute), 73 GET_PAGE_SOURCE
GET_CREDENTIALS
(selecione o atributo
nium.webdriver.remote.command.Command), 73
(selecione o atributo get_permission() (sele
nium.webdriver.remote.command.Command), 72 nium.webdriver.safari.webdriver.WebDriver method),
get_credentials() (sele 79 get_pinned_scripts() (sele
nium.webdriver.remote.webdriver.WebDriver nium.webdriver.remote.webdriver.WebDriver method), 63
method), 63 GET_CURRENT_URL get_property()
(sele nium.webdriver.remote.webelement.WebElement
nium.webdriver.remote.command.Command method), 70 get_remote_connection () (no módulo sele (selecionar
nium.webdriver.remote.webelement.WebElement
method), 69 (sele GET_ELEMENT_ARIA_LABEL
nium.webdriver.remote.command.Command attribute), 72 (sele get_remote_connection_headers() (sele
GET_ELEMENT_ARIA_ROLE nium.webdriver.remote.remote_connection.RemoteConnection método
nium.webdriver.remote.command.Command attribute), de classe), 77
(sele GET_ELEMENT_ATTRIBUTE nium. 73 GET_SCREEN_ORIENTATION (sele
webdriver.remote.command.Command attribute), 73 nium.webdriver.remote.command.Command
GET_ELEMENT_PROPERTY attribute), 73 (sele get_screenshot_as_base64()
nium.webdriver.remote.webdriver.WebDriver method), 63 (sele
get_screenshot_as_file()
nium.webdriver.remote.webdriver.WebDriver
method), 63
(selecione o atributo
nium.webdriver.remote.command.Command), 73
GET_ELEMENT_RECT get_screenshot_as_png() (sele
(selecione o atributo nium.webdriver.remote.webdriver.WebDriver
nium.webdriver.remote.command.Command), 73 method), 64 GET_SHADOW_ROOT
GET_ELEMENT_TAG_NAME (sele
(selecione o atributo nium.webdriver.remote.command.Command
nium.webdriver.remote.command.Command), 73 attribute), 73 get_timeout() (sele
GET_ELEMENT_TEXT nium.webdriver.remote.remote_connection.RemoteConnection
class
(selecione nium.webdriver.remote.command.Command method), 77
atributo), 73
GET_ELEMENT_VALUE_OF_CSS_PROPERTY (sele GET_TIMEOUTS (sele
nium.webdriver.remote.command.Command nium.webdriver.remote.command.Command
attribute), 73 get_full_page_screenshot_as_base64() attribute), 73 GET_TITLE
(selenium.webdriver.remote.command.Command
Índice 103
Machine Translated by Google
64 GET_WINDOW_RECT nium.webdriver.remote.errorhandler.ErrorCode
atributo), 74
(selecione o atributo InsecureCertificateException, 34 INSERT
nium.webdriver.remote.command.Command), 73 (selenium.webdriver.common.keys.Keys at tributo), 46 (sele
get_window_rect() install_addon() nium.webdriver.firefox.webdriver.WebDriver
(seleciona nium.webdriver.remote.webdriver.WebDriver method), 54
method), 64 get_window_size()
(sele
nium.webdriver.remote.webdriver.WebDriver method), INTERNET EXPLORER (selecionar
H atributo nium.webdriver.remote.errorhandler.ErrorCode),
(selecionar
INVALID_SELECTOR (sele
nium.webdriver.remote.errorhandler.ErrorCode
nium.webdriver.common.desired_capabilities.DesiredCapabilities atributo), 74 atributo), 48 INVALID_SESSION_ID
49 httpProxy (selenium.webdriver. atributo comum.proxy.Proxy), 49 http_proxy (atributo selenium.webdriver.common.proxy.Proxy),
(selecione o atributo
nium.webdriver.remote.errorhandler.ErrorCode), 74
(selecione o atributo INVALID_XPATH_SELECTOR
nium.webdriver.remote.errorhandler.ErrorCode), 74
EU
INVALID_XPATH_SELECTOR_RETURN_TYPER (se
ID (selenium.webdriver.common.by.By attribute), 47 id
lenium.webdriver.remote.errorhandler.ErrorCode
(selenium.webdriver.remote.webelement.WebElement
attribute), InvalidCookieDomainException,
IDLE (selenium.webdriver.common.html5.application_cache.ApplicationCache 75 attribute), 71 InvalidArgumentException,
34 attribute),34
52 InvalidCoordinatesException, 35 ( sele
IME_ENGINE_ACTIVATION_FAILED InvalidElementStateException, 35 .webdriver.remote.errorhandler.ErrorCode InvalidSelectorException,
35 (no
InvalidSwitchToTargetException, 36 invisibility_of_element() attribute),
módulo74sele
InvalidSessionIdException, 35 IME_NOT_AVAILABLE
nium.webdriver.support.expected_conditions), 86
(sele
nium.webdriver.remote.errorhandler.ErrorCode
attribute), 74 ImeActivationFailedException, 33
ImeNotAvailableException, 34 implicitly_wait()
64
104 Índice
Machine Translated by Google
86 nium.webdriver.firefox.firefox_binary.FirefoxBinary IPAD
(selenium.webdriver.common.desired_capabilities.DesiredCapabilities method), 57 atributo), 48 ESQUERDA
(selenium.webdriver.common.
(atributo selenium.webdriver.common.keys.Keys),
Atributo IPHONE
desejado_capabilities.DesiredCapabilities), 48 LEFT_ALT (selenium.webdriver.common.keys.Keys no tributo), 46 is_connectable()
46
load_json() selecionar
is_selected() nium.webdriver.remote.webelement.WebElement
method), 70 is_url_connectable() (no módulo sele nium.webdriver.common.utils),
(selecionar
51 M
make() (método estático selenium.webdriver.common.proxy.ProxyTypeFactory), 50
MANUAL (atributo selenium.webdriver.common.proxy.ProxyType), 50
maximize_window()
J (sele
JAVASCRIPT_ERROR (selecionar nium.webdriver.remote.webdriver.WebDriver method), 64 META
Atributo nium.webdriver.remote.errorhandler.ErrorCode), 75 (selenium.webdriver.common.keys.Keys attribute),
JavascriptException, 36 join_host_port() (em
nium.webdriver.common.utils), 51 46
módulo selecionar MÉTODO NÃO PERMITIDO (selecionar
atributo nium.webdriver.remote.errorhandler.ErrorCode), 75
MINIMIZE_WINDOW
k (sele
nium.webdriver.remote.command.Command
(selenium.webdriver.firefox.options.Options at attribute), 73 tributo), 56 minimize_window() key_down() KEY
(selenium.webdriver.common.action_chains.ActionChains
method), 42
(sele
nium.webdriver.remote.webdriver.WebDriver method), 64
key_up() (selenium.webdriver.common.action_chains.ActionChains
nium.webdriver.common.action_chains.ActionChains method), 43
(selecionar
eu
launch_browser() (selecionar
Índice 105
Machine Translated by Google
MoveTargetOutOfBoundsException, 36 MULTIPLY
(selenium.webdriver.common.keys.Keys no tributo), 46
46
(selenium.webdriver.remote.webdriver.WebDriver
atributo), 67 atributo), 46
(selenium.webdriver.common.keys.Keys
atributo), 47
attribute), 75atributo),
attribute), 75 NO_SUCH_FRAME nium.webdriver.remote.errorhandler.ErrorCode NO_SUCH_ELEMENT
75nium.webdriver.remote.errorhandler.ErrorCode
nium.webdriver.remote.errorhandler.ErrorCode
atributo), 47
(selecionar
(selecionar 59
nium.webdriver.support.expected_conditions), 86 P
PAC (selenium.webdriver.common.proxy.ProxyType no tributo), 50
(em PAGE_DOWN (selenium.webdriver.common.keys.Keys no
tributo), 47
106 Índice
Machine Translated by Google
Q 67
page_source (atributo selenium.webdriver.remote.webdriver.WebDriver),
atributo PAGE_UP), 47 pai (atributo QUIT (selenium.webdriver.remote.command.Command attribute),
selenium.webdriver.remote.webelement.WebElement), 71
(selenium.webdriver.common.keys.Keys 73 quit()
(selenium.webdriver.firefox.extension_connection.ExtensionConn method), 58
R
(sele
rect (atributo selenium.webdriver.remote.webelement.WebElement),
nium.webdriver.remote.webdriver.WebDriver method),
71 REFRESH (atributo
64 port (selenium.webdriver.firefox.firefox_profile.FirefoxProfile
selenium.webdriver.remote.command.Command), 73 refresh()
attribute), 57
(preferências selenium.webdriver.remote.webdriver.WebDriver
(selenium.webdriver.firefox .options.Options method), 65 attribute), 56
release() (método selenium.webdriver.common.action_chains.ActionChains Presence_of_all_elements_located()), 43 (em
nium.webdriver.support.expected_conditions), 86
módulo selecionar
Conexão remota (classe sele em
nium.webdriver.remote.remote_connection), 76
remove_all_credentials() (sele
PRINT_PAGE (selenium.webdriver.remote.command.Command attribute), nium.webdriver.remote.webdriver.WebDriver method),
73 print_page()
65 REMOVE_CREDENTIAL
(sele
nium.webdriver.remote.webdriver.WebDriver method),
(selecione nium.webdriver.remote.command.Command
64 profile (selenium.webdriver.firefox.options.Options
atributo), 73
attribute), 56 Proxy (classe em selenium.webdriver.common.proxy),
nium.webdriver.remote.webdriver.WebDriver
(sele remove_credential()
method), 65 (sele
48 proxy_autoconfig_url (sele REMOVE_VIRTUAL_AUTHENTICATOR
nium.webdriver .common.proxy.Proxy tributo), 49
nium.webdriver.remote.command.Command attribute),
(sele remove_virtual_authenticator() 73
no
nium.webdriver.remote.webdriver .WebDriver method),
65 RESERVED_1 (atributo
proxy_type (atributo selenium.webdriver.common.proxy.Proxy), 49
selenium.webdriver.common.proxy.ProxyType), 50 reset_actions()
proxyAutoconfigUrl nium.webdriver.common.proxy.Proxy
tributo), 49 (classe ProxyType nium.webdriver.common.proxy), 50
(selecionar
no
proxyType (selenium.webdriver.common. proxy. Atributo
proxy), 49
em selecionar
(selecionar
nium.webdriver.common.action_chains.ActionChains method),
43 reset_timeout() (seleciona
nium.webdriver.remote.remote_connection.RemoteConnection class 77
method),
ProxyTypeFactory (classe em selecionar
nium.webdriver.common.proxy), 50
Índice 107
Machine Translated by Google
(sele
nium.webdriver.remote.webdriver.WebDriver method),
45
65 SCREENSHOT
selenium.webdriver.common.proxy (módulo),
(selenium.webdriver.remote.command.Command attribute), 73 screenshot()
48
(selecionar
selenium.webdriver.common.service (módulo), 51
método nium.webdriver.remote.webelement.WebElement), selenium.webdriver.common.utils (módulo),
70 screenshot_as_base64 atributo
nium.webdriver.remote.webelement.WebElement), 71 50
(selecionar
78
(selecionar
selenium.webdriver.remote.command (módulo), 72
nium.webdriver.common.action_chains.ActionChains method),
44 scroll_from_origin() selenium.webdriver.remote.errorhandler
nium.webdriver.common.action_chains.ActionChains method), 44
(selecionar
(módulo), 74
selenium.webdriver.remote.mobile (módulo), 75
scroll_to_element() (selecionar
selenium.webdriver.remote.remote_connection
(módulo), 76
nium.webdriver.common.action_chains.ActionChains method),
44 Select (classe em selenium.webdriver.support.select), 80
select_by_index() (sele nium.webdriver.support.select.Select method), selenium.webdriver.remote.utils
81 (módulo),
77
selenium.webdriver.remote.webdriver (módulo), 59
selenium.webdriver.remote.webelement
select_by_value() (sele
nium.webdriver.support.select.Select method), 81 (módulo), 68
selenium.webdriver.safari.service (módulo), 80
select_by_visible_text() (sele nium.webdriver.support.select.Select
selenium.webdriver.safari.webdriver
method), 81
(módulo), 79
108 Índice
Machine Translated by Google
método nium.webdriver.firefox.options.Options),
send_keys() (método selenium.webdriver.common.alert.Alert), 45 55 SET_SCREEN_ORIENTATION
(sele
send_keys() (selenium.webdriver.remote.webelement.WebElement nium.webdriver.remote.command.Command
set_script_timeout() send_keys() attribute), 73
método), 70
(selenium.webdriver.support.event_firing_webdriver.EventFiringWebElement
(selenium.webdriver. remote.webdriver.WebDriver method), 65 set_timeout() (sele
método), 85 nium.webdriver.remote.remote_connection.RemoteConnection
SEND_KEYS_TO_ELEMENT class method), 77
(selecione o atributo
nium.webdriver.remote.command.Command), 73
send_keys_to_element() (selecionar
Índice 109
Machine Translated by Google
(em módulo
módulo
selecione title_is() nium.webdriver.support.expected_conditions),
(em
110 Índice
Machine Translated by Google
to_capabilities() (selecionar
nium.webdriver.firefox.options.Options
method), 55 (em módulo sele
url_matches() nium.webdriver.support.expected_conditions), 87
você
UNCACHED
(selenium.webdriver.common.html5.application_cache.ApplicationCache virtual_authenticator_id
atributo), 52 (sele
UNEXPECTED_ALERT_OPEN (selecionar
nium.webdriver.remote.webdriver.WebDriver attribute),
atributo nium.webdriver.remote.errorhandler.ErrorCode), 68 visibilidade_of() (no módulo sele
75 UnexpectedAlertPresentException, 39 nium.webdriver.support.expected_conditions), 87
UnexpectedTagNameException, 40 uninstall_addon()
(sele
nium.webdriver.remote.command.Command attribute),
74 until() (selenium.webdriver.support.wait.WebDriverWait
W3C_ACTIONS (selenium.webdriver.remote.command.Command method),
selenium.webdriver.support.wait.WebDriverWait
82 attribute), 74 until_not() (método W3C_CLEAR_ACTIONS),
83
(sele
nium.webdriver.remote.command.Command attribute),
UP (atributo selenium.webdriver.common.keys.Keys), 47 74 W3C_DISMISS_ALERT
update_preferences() (sele (sele
nium.webdriver.firefox.firefox_profile.FirefoxProfile method), nium.webdriver.remote.command.Command attribute),
56 74 W3C_EXECUTE_SCRIPT
UPDATE_READY (selecionar
(selecione o atributo
atributo nium.webdriver.common.html5.application_cache.ApplicationCache),
nium.webdriver.remote.command.Command), 74
52 UPLOAD_FILE (atributo selenium.webdriver.remote.command.Command),
74 W3C_EXECUTE_SCRIPT_ASYNC
(selecione o atributo
nium.webdriver.remote.command.Command), 74
Índice 111
Machine Translated by Google
em selecionar
78
WebDriver (classe em selecionar
nium.webdriver.remote.webdriver), 59 (classe
nium.webdriver.safari.webdriver),
WebDriver
79 em selecionar
WebDriverException, 40 (classe
WebDriverWait nium.webdriver.support.wait), em selecionar
82 (classe em
WebElement selecionar
nium.webdriver.remote.webelement), 68 WEBKITGTK
(atributo selenium.webdriver.common.desired_capabilities.DesiredCapabilities), 48 which() (selenium. método
webdriver.firefox.firefox_binary.FirefoxBinary), 57 wifi (atributo
selenium.webdriver.remote.mobile.Mobile.ConnectionType), 76 WIFI_NETWORK
(selecionar
Tributo nium.webdriver.remote.mobile.Mobile), 76 no
window_handles (seleciona o atributo
nium.webdriver.remote.webdriver.WebDriver), 68
WPEWEBKIT (selenium.webdriver.common.desired_capabilities.DesiredCapabilities
atributo), 48
wrap_driver (selecionar
nium.webdriver.support.event_firing_webdriver.EventFiringWebDriver atributo), 84
wrap_element nium.webdriver.support.event_firing_webdriver.EventFiringWebElement
attribute), 85 (selecionar
112 Índice