python查找元素并单击它

o8x7eapl  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(424)

我已经被困在这行代码超过2个星期了,我希望有人可以来帮助我!
我正在使用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\u element\u by\u id方法再次运行它,它就会突然工作一到两次,但随后它又停止工作!
有什么办法解决这个问题吗?
谢谢你的帮助!!!:)

dwthyt8l

dwthyt8l1#

你可以试试这个xpath。

//a[normalize-space(.)="Análise Financeira e de Gestão"]
py49o6xq

py49o6xq2#

也许你试图点击的元素是在一个帧中找到的,如果是这样的话,你应该先切换到那个iframe,然后你就可以对这个元素执行所需的操作了

相关问题