webelemnet与Selenium的位置

时间:2014-05-14 04:20:09

标签: python selenium xpath

我的html以下。我希望获得<li>组并找到每个组。

<div id="shiplist" class="vertical slide" data-interval="false">
<div class="<inner ship-list-container">
    <div class="item active">
        <ul class="unstyled ship-list">
            <li class="selected"></li>
            <li>
                <a href="....">
                    XXXX
                    <span class="small">
                          xxx
            <li>

我目前的代码:

ItemList = driver.find_elements_by_xpath("//div[@class='inner ship-list-container']//div[@class='item']//ul/li")
for item in ItemList :
    print item.find_element_by_xpath('//span[@class="small"]').text   
    driver.find_element_by_xpath('//div[@class="carousel-inner ship-list-container"]//div[@class="item active"]//ul/li[' + str(i) + ']/a').click()

当我通过以下代码捕获span class="small"时,这是错误的

print item.find_element_by_xpath('//span[@class="small"]').text
  

StaleElementReferenceException:消息:在缓存中找不到u'Element - 也许页面自查找以来已经发生了变化'; Stacktrace:

2 个答案:

答案 0 :(得分:0)

您可以通过这种方式解决问题:

ItemList = driver.find_elements_by_xpath("//div[@class='inner ship-list-container']//div[@class='item']//ul/li")
for x in range(len(ItemList)):
    print ItemList[x].find_element_by_xpath('//span[@class="small"]').text   
    driver.find_element_by_xpath('//div[@class="carousel-inner ship-list-container"]//div[@class="item active"]//ul/li[' + str(i) + ']/a').click()
    ItemList = driver.find_elements_by_xpath("//div[@class='inner ship-list-container']//div[@class='item']//ul/li")

答案 1 :(得分:0)

感谢理查德。

我的HTML

        <li>
            <a href="....">
                XXXX
                <span class="small">
                      X1
        <li>
        <li>
            <a href="....">
                XXXX
                <span class="small">
                      X2
        <li>

当我使用以下代码

ItemList = driver.find_elements_by_xpath("//div[@class='inner ship-list-container']//div[@class='item']//ul/li") 
for x in range(len(ItemList)):
    print ItemList[x].find_element_by_xpath('//span[@class="small"]').text

这里

结果仅显示第一项     X1     X1