1

我已经被这行代码困了两个多星期了,我希望有人能来帮助我!

我正在使用 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 方法再次运行它,它就会突然运行一次或两次,但随后又停止运行!

关于如何解决这个问题的任何想法?

谢谢您的帮助!!!:)

4

2 回答 2

0

你可以试试这个 xpath。

//a[normalize-space(.)="Análise Financeira e de Gestão"]
于 2021-04-27T17:57:07.293 回答
0

也许您尝试点击的元素在一个框架内找到,如果是这种情况,您应该先切换到该 iframe,然后您将能够对该元素执行所需的操作

于 2021-04-27T20:54:02.047 回答