【发布时间】:2020-02-19 02:50:10
【问题描述】:
我尝试使用 xpath 搜索,但它对我不起作用。这个想法是我将鼠标移到“Nota Fiscal”上,然后在下拉菜单中用鼠标向下并单击“Emissão”。下拉菜单位于名为“pag_principal”的框架内,其余代码(不在此处)在该框架内工作,也就是说,selenium 已正确切换窗口和框架...... Inspect elements 我的问题是:selenium.common.exceptions.ElementNotInteractableException: Message: Element could not be scrolled into view.
我该如何解决这个问题?
我尝试的代码是这样的:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
bot.get('https://www.nfs-e.net/fiscalweb.php')
time.sleep(3)
campo_login = bot.find_element_by_xpath("//input[@name='login_temp']")
campo_login.clear()
campo_login.send_keys(self.usuario)
password = bot.find_element_by_xpath('//*[@id="passw_temp"]')
password.clear()
password.send_keys(self.senha)
password.send_keys(Keys.RETURN)
time.sleep(6)
# handling to new window
bot.switch_to.window(bot.window_handles[1])
bot.maximize_window()
def envio(self):
bot = self.bot
time.sleep(5)
bot.switch_to.frame("pag_principal")
time.sleep(2)
# this is the part that I want selenium to select the item "Emissão" in the drop-down menu "Nota Fiscal"
Nota_fiscal = WebDriverWait(bot, 100000).until(EC.element_to_be_clickable((By.XPATH, "/html/body/table/tbody/tr[1]/td/div/div/ul[1]/li[5]/div/ul/li[1]/a/span"))).click()
time.sleep(2)
Emissão = bot.find_element_by_xpath('/html/body/table/tbody/tr[1]/td/div/div/ul[1]/li[5]/div/ul/li[1]/a/span').click()
[尝试使用 select]
Menu = bot.find_element_by_class_name("menu")
mySelectElement = bot.find_element_by_xpath('/html/body/table/tbody/tr[1]/td/div/div/ul[1]/li[5]/a/span')
dropDownMenu = Select(mySelectElement)
WebDriverWait(bot, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/table/tbody/tr[1]/td/div/div/ul[1]/li[5]/div/ul/li[1]/a/span")))
dropDownMenu.select_by_visible_text('Emissão')
time.sleep(2)
Emissão = bot.find_element_by_xpath('/html/body/table/tbody/tr[1]/td/div/div/ul[1]/li[5]/div/ul/li[1]/a/span').click()
[我想点击“Nota Fiscal”下拉菜单中的“Emissão”(我不知道如何编辑 html)]
<div class="titulo_sistema">Nota Fiscal Eletrônica</div> <ul class="menu"><li><a href="javascript:void(0)"><span> Globais </span></a><div><ul><li><a href="javascript:void(0)"><span class="span_sub_menu">Cadastros</span></a><div><ul><li><a href="javascript:void(0)"><span class="span_sub_menu">Diversos</span></a><div><ul><li><a onclick="carrega_rotina_menu(1026,118,event)" href="javascript:void(0)"><span class="span_menu" title="Alterar Senha/E-Mail">Alterar Senha/E-Mail</span></a></li><li><a onclick="carrega_rotina_menu(3565,101,event)" href="javascript:void(0)"><span class="span_menu" title="CPFCNPJ x Email">CPFCNPJ x Email</span></a></li><li><a onclick="carrega_rotina_menu(3561,101,event)" href="javascript:void(0)"><span class="span_menu" title="Procuração Digital">Procuração Digital</span></a></li></ul></div></li><li><a href="javascript:void(0)"><span class="span_sub_menu">Pessoas/Endereços</span></a><div><ul><li><a onclick="carrega_rotina_menu(3503,101,event)" href="javascript:void(0)"><span class="span_menu" title="Bairro">Bairro</span></a></li><li><a onclick="carrega_rotina_menu(3504,101,event)" href="javascript:void(0)"><span class="span_menu" title="Logradouro">Logradouro</span></a></li><li><a onclick="carrega_rotina_menu(1014,101,event)" href="javascript:void(0)"><span class="span_menu" title="Pessoa">Pessoa</span></a></li><li><a onclick="carrega_rotina_menu(3572,101,event)" href="javascript:void(0)"><span class="span_menu" title="Estrangeiros">Estrangeiros</span></a></li></ul></div></li></ul></div></li><li><a href="javascript:void(0)"><span class="span_sub_menu">Consultas</span></a><div><ul><li><a href="javascript:void(0)"><span class="span_sub_menu">Economico</span></a><div><ul><li><a onclick="carrega_rotina_menu(3517,101,event)" href="javascript:void(0)"><span class="span_menu" title="Atividades">Atividades</span></a></li><li><a onclick="carrega_rotina_menu(3526,101,event)" href="javascript:void(0)"><span class="span_menu" title="Cadastro Econômico">Cadastro Econômico</span></a></li></ul></div></li><li><a href="javascript:void(0)"><span class="span_sub_menu">Pessoas/Endereços</span></a><div><ul><li><a onclick="carrega_rotina_menu(3525,101,event)" href="javascript:void(0)"><span class="span_menu" title="Cidade">Cidade</span></a></li><li><a onclick="carrega_rotina_menu(3506,101,event)" href="javascript:void(0)"><span class="span_menu" title="Pessoa">Pessoa</span></a></li><li><a onclick="carrega_rotina_menu(3573,101,event)" href="javascript:void(0)"><span class="span_menu" title="Estrangeiros">Estrangeiros</span></a></li></ul></div></li></ul></div></li></ul></div></li><li><a href="javascript:void(0)"><span>Autorização</span></a><div><ul><li><a onclick="carrega_rotina_menu(9710,101,event)" href="javascript:void(0)"><span class="span_menu" title="Solicitação de Cancelamento de NFSe">Solicitação de Cancelamento de NFSe</span></a></li><li><a onclick="carrega_rotina_menu(4505,101,event)" href="javascript:void(0)"><span class="span_menu" title="Utilização de NFSe">Utilização de NFSe</span></a></li></ul></div></li><li><a href="javascript:void(0)"><span>Configurações</span></a><div><ul><li><a onclick="carrega_rotina_menu(4514,101,event)" href="javascript:void(0)"><span class="span_menu" title="Cabeçalho da NFSe">Cabeçalho da NFSe</span></a></li></ul></div></li><li><a href="javascript:void(0)"><span>Consulta</span></a><div><ul><li><a onclick="carrega_rotina_menu(4524,101,event)" href="javascript:void(0)"><span class="span_menu" title="NFS-e Prestadas">NFS-e Prestadas</span></a></li><li><a onclick="carrega_rotina_menu(4506,101,event)" href="javascript:void(0)"><span class="span_menu" title="NFS-e Tomadas">NFS-e Tomadas</span></a></li></ul></div></li><li><a href="javascript:void(0)"><span>Nota Fiscal</span></a><div><ul><li><a onclick="carrega_rotina_menu(9598,656,event)" href="javascript:void(0)">**<span class="span_menu" title="Emissão">Emissão</span>**</a></li><li><a onclick="carrega_rotina_menu(9597,109,event)" href="javascript:void(0)"><span class="span_menu" title="Cancelamento">Cancelamento</span></a></li><li><a onclick="carrega_rotina_menu(4501,101,event)" href="javascript:void(0)"><span class="span_menu" title="Gerenciamento de Notas">Gerenciamento de Notas</span></a></li><li><a onclick="carrega_rotina_menu(4511,436,event)" href="javascript:void(0)"><span class="span_menu" title="Exportação">Exportação</span></a></li></ul></div></li> <li> <a href="javascript:void(0)" onclick="parent.window.close(0,event)"><span> Sair </span></a> </li> </ul> <ul style="float:right;"> <li style="width:25px;max-height:25px;padding:3px;text-align:center;cursor: pointer;color:#104E8B;" title="Início" id="home-button"> <i class="fa fa-home" style="font-size:18px;padding-top:3px;cursor: pointer;" onclick="abre_tela_inicial();"></i> </li> <li style="width:25px;max-height:25px;text-align:center;padding:3px;" title="Usuário" id="perfil-usuario"> <i class="fa fa-user" style="font-size:18px;padding-top:3px;cursor: pointer;" onclick="abrePerfilUsuario()"></i> </li> <li style="float:right;height:35px;margin-right: 35px; padding-left:5px;background:none;position:block;" id="lipesquisa" name="lipesquisa"> <input type="text" id="container_pesquisa" name="container_pesquisa" class="container_busca campo_externo_suggest" placeholder="Pesquisa" onfocus="focusPesquisa(this, 'in')" onblur="focusPesquisa(this, 'out')" suggest="true" autocomplete="off"><script> $(document).ready(function(){$("#container_pesquisa").autocompletepesquisa({"aCamposVisualizacao":["frm_tit"],"iRotina":"16","sCampoProcurado":"frm_tit","sCampos":"container_pesquisa:frm_tit","sSessao":"3cbtrg9e3c1eil54cupilua6s1","sUrlAbrir":"","sNome":"form","iRotChamou":"0","iAcaChamou":"20","bAutoComplete":true,"aAjaxCampos":["container_pesquisa"],"bAjaxComplete":true});}); if ($.browser.msie) { if($.browser.version == 9.0 || $.browser.version == 8.0) { $('#container_pesquisa').css('padding-top','3px'); $('#container_pesquisa').css('background-position','5px -1px'); } }</script> </li> </ul>
首先我需要将鼠标悬停在这些元素上以显示下拉菜单
<span>Nota Fiscal</span>
而我要点击的元素就是这个
<span class="span_menu" title="Emissão">Emissão</span>
【问题讨论】:
-
你好,@KentKostelac,我尝试像这样使用 select 但我不能将它与 span 元素一起使用 消息:Select 仅适用于
-
我已经编辑了你的问题。将来只需编辑您的问题。然后添加评论以引起注意。如你看到的;注释中写的代码不可读
-
更重要的是。您应该尝试使用属性来查找您需要使用的元素。从浏览器复制粘贴 xpath 并不适用于所有情况。也在你的 xpath 中。您选择的是 而不是
-
向我们提供您尝试从中选择的 HTML 的最小可验证示例,以便我们确定您的 xpath 有什么问题。因为现在我只能告诉你你的 xpath 是错误的。而且一张图不算数。
标签: python-3.x selenium drop-down-menu automation