具有相同id的两个web元素的行为不同。 (Python,Selenium)

时间:2018-03-23 05:47:26

标签: python selenium firefox

我正在尝试在Python中使用Selenium在页面上找到几个ProgressBars。令我不安的是,两个具有完全相同内容的对象的行为不同。

(Pdb) ml.colorbars[2]
<framework.web.base.element.ProgressBar object at 0x250dc50>
(Pdb) ml.colorbars[2].element
#### received nothing here
(Pdb) ml.colorbar_2
<framework.web.base.element.ProgressBar object at 0x250dc50>
(Pdb) ml.colorbar_2.element
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="b2dd0af2-53fb-49fd-8595-6cd50c751f99", element="6a49815e-0188-483e-b451-41ed88f916a0")>
(Pdb) ml.colorbars[2]
<framework.web.base.element.ProgressBar object at 0x250dc50>
(Pdb) ml.colorbars[2].element
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="b2dd0af2-53fb-49fd-8595-6cd50c751f99", element="6a49815e-0188-483e-b451-41ed88f916a0")>

这里,colorbar_2是我给ProgressBar变量的名称。 colorbars[2]是为存储所有条形而创建的列表中的第三个元素。获取element的{​​{1}}属性似乎会激活列表中的相应对象。

---第一次更新---

代码试验如下。

colorbar_2

现在我更喜欢获取包含所有颜色块的列表namespace = locals() colorbars = [] loc_template = "tr[{}]//div[@class='elWidgets-ProgressBar-bar']" # instantialization of colorbars for index in range(bar_num): colorbar_locator = ('xpath', loc_template.format(index)) namespace['colorbar_%s' % index] = ProgressBar(colorbar_locator) colorbars.append( namespace['colorbar_%s' % index] ) ,而不是获取特定名称为colorbarscolorbar_1等的属性,因为变量名称是动态生成的。但是,在获得colorbar_0的colorbar_2之前,我无法在调试中获得element colorbars[0]属性。 (请参阅顶部的调试日志)

0 个答案:

没有答案