【问题标题】:how do I get around this error 'webelement does not support indexing"[webdriver][python]如何解决此错误“webelement 不支持索引”[webdriver][python]
【发布时间】:2013-05-18 02:42:24
【问题描述】:

我正在做一个 xpath 搜索

page = driver.find_element_by_xpath('//td[@class="mceIframeContainer mceFirst mceLast"]')[1]

这给了我我需要的第一个类项目,在 firebug 中,但显然 python 不允许我将 [1] 添加到 find 函数中。有什么解决方法吗?搜索返回 2 个项目,我只想要一个。我是不是搞错了?

【问题讨论】:

  • 啊,你说得对,你给了我同样的答案,但有些我没有注意到>

标签: python selenium webdriver


【解决方案1】:

需要在字符串的一部分添加[1]

例如对于网页上的一堆相同的表单,第一个 xpath 可能是

/html/body/form/table/tbody/tr[1]/td[2]/input

第二个是

/html/body/form/table/tbody/tr[2]/td[2]/input

或者您可以改用find_elements_by_xpath,然后它们就可以被索引了 那是find_element***s***_by_xpath,带有 S

【讨论】:

  • 谢谢!虽然这可以定位元素,但之后我无法让我的代码工作,但这是一个很好的答案
  • 1.获取谷歌浏览器 2. 打开上面有内容的网页 3. 右键单击​​您想要的元素 4. 转到检查元素 5. 右键单击​​下面弹出的窗口中的选定区域,然后点击“复制 xpath”。将其粘贴到记事本中,然后对其他元素执行相同的操作,并观察差异,然后您会更好地理解我的意思。
  • 是的,感谢您的建议。我实际上一直在这样做,但是我尝试的特定网站对于每个对象都是动态的。我尝试复制 xpath 的每个元素,它只是给了我一个动态 id。我不知道如何克服,所以我只使用糟糕的 xpath 选择,带有文本和所有 XD。当我试图找到没有 id 的 xpath 时,这很难,因为可能有 400 个 div,我必须猜测它在哪里,除非 firebug 可以告诉我,但 firebug 总是按 id 向我显示 xpath
【解决方案2】:

像大多数 Selenium WebDriver 绑定一样,如果您只指定“元素”,您将只返回第一个找到的元素。但是,如果您在方法中指定“元素”,它将返回找到的元素数组。

所以你的代码应该是:

page = driver.find_elements_by_xpath('//td[@class="mceIframeContainer mceFirst mceLast"]')[1]

http://selenium.googlecode.com/svn/trunk/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html?highlight=find_element_by_xpath#selenium.webdriver.remote.webdriver.WebDriver.find_elements_by_xpath

【讨论】:

  • 哇哦我不知道它只返回1个元素,这也是一个很好的答案
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多