如何使用Python遍历Selenium中的内部div标签?

时间:2014-04-30 05:08:07

标签: python selenium

我有一个html代码如下:

<div class="abc">
  <div class ="xyz"
   <p> xyz </p>
  </div>

  <div class= "foo">
   <p>foo</p>
   <a class="btn btn-lg btn-success" href="www.google.com" role="button" name="click" id="click">Click me</a>
  <div>
</div>

如何在此处抓取Click me按钮并使用Selenium进行单击。我使用driver.find_element_by_id()但它没有用,并且出错了。

我想我可能需要遍历div标签才能到达按钮。我尝试使用下面的代码来获取div类但无法继续。

def test(self):
    self.driver.get("sample site address")
    elem = self.driver.find_element_by_class_name("abc")
    #need to get to the button and click it?

ERROR:

    raise exception_class(message, screen, stacktrace)
InvalidSelectorException: Message: u'The given selector abc is either invalid or does not result in a WebElement. The following error occurred:\nInvalidSelectorError: Compound class names not permitted' ; Stacktrace: 
    at FirefoxDriver.annotateInvalidSelectorError_ (file:///tmp/tmpXXYwwK/extensions/fxdriver@googlecode.com/components/driver_component.js:8879)
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpXXYwwK/extensions/fxdriver@googlecode.com/components/driver_component.js:8910)
    at FirefoxDriver.prototype.findChildElement (file:///tmp/tmpXXYwwK/extensions/fxdriver@googlecode.com/components/driver_component.js:8917)
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpXXYwwK/extensions/fxdriver@googlecode.com/components/command_processor.js:10884)
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpXXYwwK/extensions/fxdriver@googlecode.com/components/command_processor.js:10889)
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpXXYwwK/extensions/fxdriver@googlecode.com/components/command_processor.js:10831) 

-----

1 个答案:

答案 0 :(得分:0)

由于Click me是一个链接,您可以使用链接文字找到它,然后点击它:

driver.find_element_by_link_text("Click me")