Selecionar e clicar em um elemento da página, usando pycharm, selenium.

79 views
Skip to first unread message

Paulo RS Menezes

unread,
Sep 2, 2020, 10:03:50 AM9/2/20
to Selenium Brasil
<div class="noselect nodrag" qxselectable="off" id="ext-gen22" style="background-image: url(&quot;images/principal/atendimentos.png&quot;); user-select: none; position: absolute; z-index: 10; background-position: 0px 0px; width: 225px; height: 95px; left: 0px; top: 0px;"></div>

Obs: o id é dinâmico, a cada entrada na pagina ele altera o valor.
Já tentei:
Atendimentos = driver.find_element_by_partial_link_text()
Atendimentos: WebElement = driver.find_element_by_class_name()


Patrick Bressan Bremm

unread,
Sep 2, 2020, 12:39:42 PM9/2/20
to Selenium Brasil
Bom dia,

É mais fácil utilizar o xpath, não sei se essa Div seria a melhor para vc interagir... Olhando para ela vc poderia utilizar contains na tag @style.

Paulo RS Menezes

unread,
Sep 2, 2020, 12:55:05 PM9/2/20
to Selenium Brasil
O problema é exatamente esse, ao utilizar o object inspector no elemento que é clicável ele aponta para essa div e não encontrei comandos para usar o @style. Sou novato em todas essas linguagens. quando tento retorna esse erro:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@style='background-image: url(&quot;images/principal/atendimentos.png&quot;); user-select: none; position: absolute; z-index: 10; background-position: 0px 0px; width: 225px; height: 95px; left: 0px; top: 0px;']"}
  (Session info: chrome=85.0.4183.83)

Paulo RS Menezes

unread,
Sep 2, 2020, 1:59:53 PM9/2/20
to Selenium Brasil
Consegui resolver parcialmente. Localizo o objeto mas ele não é clicável. usei este código para localizar.
Atendimentos = driver.find_elements_by_xpath("//*[contains(text(),'atendimentos.png')]")

Patrick Bressan Bremm

unread,
Sep 2, 2020, 7:43:46 PM9/2/20
to Selenium Brasil
Boa Noite,

Vamos lá, o erro que vc aponto é esse:  NoSuchElementException -> Basicamente significa que não encontrou o Xpath que vc passou. Olhando para o xpath que vc errou parece errado... vou montar um exemplo aqui:

.//*[contains(@style, 'images/principal/atendimentos.png')] 

Provavelmente assim vai encontrar

.//*[contains(@style, 'images/principal/atendimentos.png')]   

Explicando um pouco melhor o @ representa a tag no html exemplos no caso que vc mandou: class, qxselectable, id (tem vários, normalmente a tag fica antes do = )

Não recomento utilizar o Text(), apenas em casos extremos

Espero ter ajudado =)

Paulo RS Menezes

unread,
Sep 2, 2020, 8:08:06 PM9/2/20
to Selenium Brasil
Muito obrigado pela ajuda, com uma pequena modificação na sintaxe funcionou perfeitamente, me retornou um elemento clicável que era o que necessitava. vou colocar o código como funcionou para ajudar outros com problemas semelhantes.
btnatendimentos = driver.find_element_by_xpath("//*[contains(@style,'images/principal/atendimentos.png')]")

Reply all
Reply to author
Forward
0 new messages