【问题标题】:Can't find element on page no matter what I try无论我尝试什么都无法在页面上找到元素
【发布时间】:2021-07-29 02:50:32
【问题描述】:

我正在寻找在搜索结果页面上的元素。我尝试通过 xpath、wait_for_element_to_be_clickable、find_element_by_link_text 等进行定位,但仍然无法让 selenium 找到它。

如果我让驱动程序重新加载搜索页面的初始 URL,则会显示相同的搜索结果,而不是初始搜索页面。我试过 nuking cookie 等。这种行为存在于 chrome 和 firefox 上。

初始网址:https://elibrary.ferc.gov/eLibrary/search

只需点击搜索按钮即可获得结果。但是,我无法在页面顶部找到带有 selenium 的“常规搜索”链接以返回并输入新的搜索条件。该链接与初始 URL 相同。我的代码选择链接并点击:

        try:
            self.driver.find_element_by_xpath('//*[@id="srchResult"]/nav/div/ul/li[1]/a[1]').click
            
        except:
            _LOGGER.warning('Could Not Click on General Search - starting new driver')
            self.driver = webdriver.Firefox(executable_path=r"/usr/local/bin/geckodriver", options=options)

非常感谢任何帮助。

【问题讨论】:

    标签: python-3.x selenium


    【解决方案1】:

    该链接的 XPath 是://a[@aria-label='Return to General Search']

    【讨论】:

    • 好的,我可以从中学习:您是如何识别正确的 xpath 的?我检查了元素,然后在 chrome 中复制了 xpath
    • 您应该始终寻找唯一的定位器。在这里,我找到了带有 area-label 属性的“a”标签,这是独一无二的。
    【解决方案2】:

    您可以使用以下xpath:
    //a[contains(@aria-label,'Return to General Search')]
    找到您要查找的元素 或xss_selector:a[aria-label='Return to General Search']
    在点击之前不要忘记设置等待条件!

    【讨论】:

      【解决方案3】:

      那个链接是

      <a _ngcontent-c1="" aria-expanded="false" aria-label="Return to General Search" class="btn btn-link nav2" name="Refine" href="/eLibrary/search">General Search</a>
      

      它有一个名称,这是查找它的首选方法,因为它最不可能更改。下面的 CSS 选择器有效。

      a[name='Refine']
      

      【讨论】:

        猜你喜欢
        • 2019-06-20
        • 2020-08-11
        • 1970-01-01
        • 1970-01-01
        • 2022-12-07
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 2020-10-01
        相关资源
        最近更新 更多