没有打印的锯齿状列表/ Selenium WebElement没有更新?

时间:2018-04-02 00:26:12

标签: python-3.x list for-loop selenium-webdriver multidimensional-array

全部。

下面的代码部分是使用Python 3.x的较大程序的代码段。 colorSkusArray具有值:

[[https://us.testcompany.com/eng-us/products/test-productv#443],[https://us.testcompany.com/eng-us/products/test-productv#544],[https://us.testcompany.com/eng-us/products/test-productv#387]]

    listTwo = []
    for a in range(0, len(colorSkusArray)):
        browser.get(colorSkusArray[a])
        print(colorSkusArray[a])   # the link to each skus page we'll pull views from
        sBin = browser.find_elements_by_xpath("// *[ @ id = 'lightSlider'] / li / img")
        listOne = []
        for b in sBin:
            storer = b.get_attribute('src')
            print(storer) # the src of each img on the sku's page
            listOne.append(storer)
        print('NEXT ELEMENT')
        listTwo.append(listOne)
        del sBin
        del storer
        del listOne[:]
    print(listTwo)

此处的打印输出内容如下:

https://us.testcompany.com/eng-us/products/test-productv#443
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM2_Front%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Side%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Interior%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Other%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Other%20view2.jpg?wid=140&hei=140
NEXT ELEMENT
https://us.testcompany.com/eng-us/products/test-productv#544
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM2_Front%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Side%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Interior%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Other%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Other%20view2.jpg?wid=140&hei=140
NEXT ELEMENT
https://us.testcompany.com/eng-us/products/test-product#M543
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM2_Front%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Side%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Interior%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Other%20view.jpg?wid=140&hei=140
https://us.testcompany.com/images/is/image/lv/1/PP_VP_L/test-productv#443_PM1_Other%20view2.jpg?wid=140&hei=140
NEXT ELEMENT
[[], [], []]

我出现(?)与sBin WebElement有关的问题。应该发生什么:

  1. 访问的每个页面的链接都打印出来:SUCCESS。见 来自storer的以下5个地址中的每个地址之前的地址。
  2. 打印每个产品的每个视图(5)的链接: 不成功。看到相同的5个链接打印到相同的5个视图, 三次以上。这三个块中的每一个都应该有5个唯一的链接,但显然相同的5个链接被引用三次。
  3. 列表的完整列表(listTwo)应该打印所有内容:UNSUCCESSFUL。查看输出底部listTwo打印输出中的三个空列表。
  4. 关于2):我现在已经看了将近四个小时,并且无法弄清楚发生了什么。调试一段时间之后,我可以猜到sBin变量可能无法正确更新。我在每个循环结束时插入了一个del命令来重置它,但这并没有解决问题。否则,我不知道为什么同样的5 src会继续追加,尽管每次都会将新的链接传递给browser.get()方法。

    关于3):我之前打印过列表清单,所以我相信PyCharm应该能够处理这个打印输出。也许我过去印刷的那些在某种程度上是不同的(考虑到输出的差异),但据我所知,它们完全相同。我已经读过关于使用Numpy打印阵列的信息,但就我所知,在这里打印并不是必要的。

    我是Python和Selenium的新手,所以所有建议和评论都表示赞赏!

1 个答案:

答案 0 :(得分:0)

我已经解决了2.通过将browser.quit()放在for循环的末尾,sBin WebElement现在正在循环的每次迭代中正确更新。我明白为什么会这样,虽然我不明白为什么这是必要的。它没有回答我原来的问题,但它显然解决了这个问题......

关于3.,我仍然不知道什么是错的。如果列表(例如List[0])会打印好其内容,我就不明白为什么锯齿状列表只打印空[]