Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 系统第二次找不到元素_Python_Selenium_Xpath - Fatal编程技术网

Python 系统第二次找不到元素

Python 系统第二次找不到元素,python,selenium,xpath,Python,Selenium,Xpath,我的代码试图做的是找到一组元素,然后单击每个元素,此时将显示工具提示消息。单击tootip消息中的链接,该链接会将用户带到另一个页面,然后在该页面上执行一些活动并导航回上一个页面,然后单击第二个元素并单击第二个元素的工具提示消息中的链接 出于某种原因,我的代码只是第二次单击工具提示消息中的链接。下次它无法在工具提示消息中找到要单击的链接。有人能帮忙吗?我尝试过不同的方法,但都没有效果。请在下面找到我编写的代码: 我正在使用Python和Selenium elements = driver.f

我的代码试图做的是找到一组元素,然后单击每个元素,此时将显示工具提示消息。单击tootip消息中的链接,该链接会将用户带到另一个页面,然后在该页面上执行一些活动并导航回上一个页面,然后单击第二个元素并单击第二个元素的工具提示消息中的链接

出于某种原因,我的代码只是第二次单击工具提示消息中的链接。下次它无法在工具提示消息中找到要单击的链接。有人能帮忙吗?我尝试过不同的方法,但都没有效果。请在下面找到我编写的代码:

我正在使用Python和Selenium

  elements = driver.find_elements_by_css_selector("#top-tables-chart-container > div > svg > g > g > rect")
  counter = 0
  for counter in range(counter, len(elements)):
          elements = driver.find_elements_by_css_selector("#top-tables-chart-container > div > svg > g > g > rect")
          webdriver.ActionChains(driver).move_to_element(elements[counter]).click().perform()
          time.sleep(5)
          tableNameLink= elements[counter].find_element_by_xpath("//div[@class='d3-tip bar-chart top-tables-tooltip n']//div[@class='left-section']//div[@class='table-name']//a[contains(@href,'#/table/')]")
          print tableNameLink
          tableNameLink.click()
          tableName = driver.find_element_by_xpath("//div[@class='discover-design-transform-container clearfix']//div[@class='left-header-section clearfix']//div[@class='entity-info table-type']//span[@class='entity-identifier']")
          table = tableName.text
          print " Table: " + table
          print '\n'

          if table == "lineitem":
            TableAccessFreqChartInfoBadgesValidation(self.driver).test_table_access_freq_chart_info_badges_validation("F","8","13","13")
            time.sleep(1)
            print '\n'

          if table == "orders":
              TableAccessFreqChartInfoBadgesValidation(self.driver).test_table_access_freq_chart_info_badges_validation("D","4","9","9")
              time.sleep(1)
              print '\n'
  topUsagePatternsTab = driver.find_element_by_xpath("//div[@id='workload-level-tabs']//a[@href='#/topUsagePatterns']")
  topUsagePatternsTab.click()

这里已经回答了:我需要单击的“表名链接”元素仅在我将鼠标悬停在我正在查找的每个元素上时加载(元素=驱动程序。通过css选择器查找元素(“#top tables chart container>div>svg>g>g>rect”))。因此,在进入for循环之前,我无法找到这些链接。你能帮我修改代码吗?没有更多的信息。读一下:我现在做的就是登录到我的应用程序,点击一个链接(最常用的模式),它会把我带到一个屏幕上,那里有一个图表(屏幕快照1),其中有不同的条形图元素。我将鼠标悬停在每个条形图元素上,找到一个“表名链接”(屏幕截图2),例如我单击的“lineitem”,它会将我带到另一个页面。在该页面上完成验证后,我再次单击显示图表的位置(顶部使用模式),然后尝试将鼠标悬停在第二个元素上,以找到第二个表名链接元素,单击以继续验证。我添加了更多的解释和屏幕截图。我是非常新的编码和新的这个网站,所以请容忍我。非常感谢。