我已经被困在这行代码中两个多星期了,我希望有人能来帮助我!
我正在使用python selenium浏览一个包含数据库的网站。我想点击一个链接,打开一个新的选项卡,从中提取我要查找的信息。我只需要做一次,所以不需要任何类型的循环!然而,我已经尝试了多次,每次都会收到ElementClickInterceptedException
错误消息。我已尝试使用WebDriverWait
,然后收到NoSuchElement
错误消息。我尝试过通过多种方式搜索元素,包括id、类名、xpath
和链接文本,但没有成功!
HTLM代码如下所示:
<a id="reportsForm:j_idt290:4:j_idt295" href="#" class="ui-commandlink ui-widget nav-item " onclick="PrimeFaces.addSubmitParam('reportsForm',{'reportsForm:j_idt290:4:j_idt295':'reportsForm:j_idt290:4:j_idt295'}).submit('reportsForm','_blank');return false;" target="_blank"><span id="reportsForm:j_idt290:4:l2" data-hasqtip="reportsForm:j_idt290:4:tooltipID" aria-describedby="qtip-reportsForm:j_idt290:4:tooltipID">Análise Financeira e de Gestão</span></a>
<span id="reportsForm:j_idt290:4:l2" data-hasqtip="reportsForm:j_idt290:4:tooltipID" aria-describedby="qtip-reportsForm:j_idt290:4:tooltipID">Análise Financeira e de Gestão</span>
到目前为止,我已经尝试过:
afg = driver.find_element_by_link_text("Análise Financeira e de Gestão")
afg = driver.find_element_by_xpath("//*[contains(text(), 'Análise Financeira e de Gestão')]")
WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable((By.ID,"reportsForm:j_idt290:4:j_idt295"))).click()
afg = driver.find_element_by_id("j_idt290:4:j_idt295")
我认为问题可能是因为链接文本不在href
之后,甚至不在同一行!所以,当我按链接文本搜索时,它找不到。。。
此外,有时,在根本不更改代码的情况下,只需使用driver.find_element_by_id方法再次运行它,它就会突然工作一两次,但随后又停止工作!
关于如何解决这个问题有什么想法吗?
谢谢你的帮助!!!:(
您可以尝试这个xpath。
//a[normalize-space(.)="Análise Financeira e de Gestão"]
也许你试图命中的元素是在一个帧中找到的,如果是这样的话,你应该先切换到该iframe,然后你就可以对该元素执行所需的操作