Python:Selenium:find_elements_by_xpath最多10个

时间:2019-03-14 12:11:01

标签: python python-3.x selenium selenium-webdriver selenium-firefoxdriver

所以,我现在有一段看起来像这样的代码;

            if browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]"):
                snipes = browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]")
            else:
                print "Cant find snipes.. Retrying..."
                browser.get("https://www.rolimons.com/deals")
                time.sleep(2)
                print "Reloaded browser... Retrying..."
                if browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]"):
                    snipes = browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]")
                else:
                    print "Shutting down engine..."
                    browser.quit()
                    checking = False
                    print "Restarting script..."
                    break

一切正常。它有60个元素。现在我只需要第一个10。如何使它仅find_elements_by_xpath的限制为10?

有什么办法吗?

谢谢!

====编辑====

此代码目前需要4秒钟。我希望通过将最大值设置为10来减少此时间。

2 个答案:

答案 0 :(得分:5)

您可以使用:

//[yourXpath]/*[position()<=10]

以您的情况

//div[contains(@class, 'dealspg_item_cell')]/*[position()<=10]

答案 1 :(得分:1)

尽管使用xpath是一个很好的答案。您还可以根据性能分别引用CSS选择器。我个人遇到过这样的问题,其中xpath不起作用,但CSS选择器是

div.dealspg_item_cell:nth-child(-1n+10)

说明nth-child(-1n+10)

+10在此处指示节点位置,我们要从中选择元素 -1n第十个节点之前的所有节点

让我们说总共有11个元素,那么选择将像这样:

enter image description here

另一个示例为nth-child(1n+10),表示第10个节点之后的所有其他节点

enter image description here

您可以从here

探索更多内容