当前位置: 首页 > 面试题库 >

Selenium Webdriver找不到收件箱元素

江光明
2023-03-14
问题内容

因为我还没有找到解决方案,所以从两个月前开始颠簸。我正在使用Firefox驱动程序来查找,然后单击名为“收件箱”的超链接,但是经过详尽的尝试,Selenium仍然找不到该元素。由于我确实无法找到Selenium
webdriver无法找到该元素的原因,因此可以提供任何帮助。

在下面的HTML代码中,我认为可能有一个框架,但找不到。 如果有人可以确认以下代码中实际上没有iframe,将不胜感激!
我的time.sleep(40)脚本中也已经有一个,以便有足够的时间让网络驱动程序找到该元素。因此,我的想法不多了,但是我在想,也许#text元素(“&nbsp”)就在“
inbox”超链接元素之前,可能是因为隐藏了“ inbox”元素导致了问题?有关如何进行的任何提示将不胜感激;下面列出了我所有的解决方案。

下面是我的代码,直到出现此元素问题为止(由于专有,URL已被删除):

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("[URL REMOVED]")
time.sleep(2)
elem1 = driver.find_element_by_css_selector('#main-content > div > div.col-md-4.radix-layouts-sidebar.sidebar-right.panel-panel.sidebar > div > div.panel-pane.pane-entity-field.pane-it-service-field-related-services.block > div > div > ul > li:nth-child(1) > a')
elem1.click()
#Logging in
time.sleep(40)
#Now in the System, click on Inbox Button
elem2 = driver.find_element_by_??? # Trying to figure out this code to find inbox element
elem2.click()

我尝试以下尝试找到元素:

find_element_by_xpath('//td[@class=’MENUCHOICE’]//a[@href="main.do?action=inbox"]')
find_element_by_xpath('/html/body/table/tbody/tr[6]/td/a')
find_element_by_link_text('Inbox')
find_element_by_partial_link_text('Inb')
find_element_by_css_selector('body > table > tbody > tr:nth-child(6) > td > a')
find_element_by_css_selector("td.MENUCHOICE a[href='main.do?action=inbox']")

我尝试过的所有定位器都引发’selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素’

我无法提供该页面的链接,因为它是专有的,但是在下面我提供了页面HTML,以防有人可以提供帮助(感兴趣的元素位于倒数第二个MENUCHOICE类:Inbox下):

 <html>
   <!--702.15-->
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta http-equiv="Cache-Control" content="no-cache">
      <meta http-equiv="Expires" content="0">
      <meta http-equiv="Pragma" content="no-cache">
      <title>UDM - Notification System</title>
      <style type="text/css">
         td.MENU1 {
         FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
         FONT-SIZE: 18pt;
         FONT-WEIGHT: medium;
         color: navy;
         }
         td.MENU2 {
         FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
         FONT-SIZE: 15pt;
         FONT-WEIGHT: medium;
         color: navy;
         }
         td.MENUCHOICE {
         FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
         FONT-SIZE: 14pt;
         FONT-WEIGHT: medium;
         color: blue;
         }
      </style>
   </head>
   <body bgcolor="#ffffff" background="payadm/images/background.gif">
      <table width="750" border="0">
      <tbody>
         <tr>
            <td><img height="55" width="129" src="payadm/images/udm_cw100.gif"></td>
         </tr>
         <tr>
            <td>&nbsp;<img src="payadm/images/footerline.gif"></td>
         </tr>
         <tr>
            <td class="MENU1">&nbsp;&nbsp;AN Main Menu</td>
         </tr>
         <tr>
            <td> &nbsp;</td>
         </tr>
         <tr>
            <td class="MENUCHOICE">&nbsp;&nbsp;&nbsp;Notification Functions:</td>
         </tr>
         <tr>
            <td class="MENUCHOICE">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
               <a href="main.do?action=inbox">Inbox</a>
            </td>
         </tr>
         <tr>
            <td class="MENUCHOICE">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
               <a href="main.do?action=notificationSel">Notification Selection</a>        
            </td>
         </tr>

谢谢您的帮助。


问题答案:

这个问题已在一个月前解决。事实证明,对于这个特定的Web应用程序,Selenium
webdriver需要从一开始就直接建立链接。否则,它不会“识别”它所在的页面。该Web应用程序通常不直接链接;您通常会浏览一个包含链接的中间页面。

我通过直接将Selenium定向到Web应用程序来解决此问题,而不是先通过中介页面并单击Web应用程序链接。即:

    from selenium import webdriver
    import time

    driver = webdriver.Firefox()
    driver.get("[DIRECT LINK INSTEAD OF INTERMEDIARY PAGE LINK]")

希望这对以后遇到类似问题的人有所帮助。



 类似资料:
  • 我一直在尝试设置AWS简单电子邮件服务,作为一种将收到的电子邮件转发到我的自定义域到我的Gmail帐户的方式,而不需要任何电子邮件托管服务。 我已经设置并验证了我的自定义域(mycustomdomain.com),还验证了它们将转发到的电子邮件地址(myemail@gmail.com)因为我仍然处于沙箱模式。 在电子邮件接收下- 没有指定收件人,我认为这应该允许为我的自定义域下的所有收件人触发此规

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 我已经写了下面的代码来选择单选按钮,它的工作很好,但今天它不工作了。请找到代码和相应的错误消息 代码1: 错误1:“线程”main“org.openqa.selenium.TimeoutException中出现异常:等待存在由:By.id:0_2485a_startdate定位的元素10秒后超时” 代码2: 错误2:“线程”main“org.openqa.selenium.TimeoutExcep

  • 我有一个输入框,就像我在这里用来输入我的问题,它的HTML是 每次,我都会尝试输入一些文本 我明白错误了-

  • 任何提示都会很有帮助!

  • 大家好,我正试图在网站中找到一个元素,但出于某种原因,它不允许我。该网页是Reddit的登录形式,我尝试输入用户名和密码,但当我列出所有输入时,它只出现在顶部搜索栏中。我想这是因为它就像在另一个“标签”一样,它会弹出到前面,但我不知道如何管理它。提前谢谢。