python selenium点击第n个元素

下面是检查的代码,当鼠标是图像上方的hovererd,基本上我想要点击图像….

<ul id="product-list"> <li class="product one-col new"> <ul> <li class="image" title="sample image"> <a href="#product/1d77e790-f74a-3859-97db-c513cbece39c"> <img width="" height="" alt="" src="/content/images/1.jpg"></img> <span class="new"> … </span> <span class="hover"></span> </a> <p class="retailer"> … </p> <p class="brand"></p> </li> <li class="price"> … </li> <li class="name" title="sample image"> … </li> <li class="first-seen"> … </li> </ul> </li> <li class="product one-col new"> … </li> <li class="product one-col new"> … </li> <li class="product one-col new"> … </li> 

我正在使用pythonselenium,并试图在下面点击跨度(hover)链接

 browser.find_element_by_css_selector("ul#product-list > :first-child > ul > li.image > a > span.hover ").click 

然而,这不工作…任何想法?

更新

 browser.find_element_by_css_selector("ul#product-list > :first-child > ul > li.image > a > span.hover ").click() File "/usr/lib/python2.7/site-packages/selenium-2.35.0-py2.7.egg/selenium/webdriver/remote/errorhandler.py", line 164, in check_response raise exception_class(message, screen, stacktrace) ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' ; Stacktrace: at fxdriver.preconditions.visible (file:///tmp/tmp6Pgi9F/extensions/fxdriver@googlecode.com/components/command_processor.js:8231) at DelayedCommand.prototype.checkPreconditions_ (file:///tmp/tmp6Pgi9F/extensions/fxdriver@googlecode.com/components/command_processor.js:10823) at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmp6Pgi9F/extensions/fxdriver@googlecode.com/components/command_processor.js:10840) at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmp6Pgi9F/extensions/fxdriver@googlecode.com/components/command_processor.js:10845) at DelayedCommand.prototype.execute/< (file:///tmp/tmp6Pgi9F/extensions/fxdriver@googlecode.com/components/command_processor.js:10787) 

更新:

这不工作太…

 browser.find_element_by_css_selector("ul#product-list > :first-child > ul > li.image > a ").click() 

更新

也尝试过动作链,鼠标点击..没有运气..

 element = browser.find_element_by_css_selector("ul#product-list > :first-child > ul > li.image") hov = ActionChains(browser).move_to_element(element) hov.click() 

解决:最后这工作…

 element_to_hover_over = driver.find_element_by_css_selector("ul#product-list > :first-child ") hover = ActionChains(driver).move_to_element(element_to_hover_over) hover.perform() if "" == driver.find_element_by_css_selector("span.hover").text: driver.find_element_by_css_selector("span.hover").click() 

你的代码丢失() 。 没有()click方法不被调用。

 browser.find_element_by_css_selector("ul...span.hover ").click() # ^^ 

 element = browser.find_element_by_css_selector("ul#product-list > :first-child > ul > li.image > a > span.hover ") browser.execute_script("arguments[0].innerText = 'asdf';", element) element.click() 

这工作:

 element_to_hover_over = driver.find_element_by_css_selector("ul#product-list > :first-child ") hover = ActionChains(driver).move_to_element(element_to_hover_over) hover.perform() if "" == driver.find_element_by_css_selector("span.hover").text: driver.find_element_by_css_selector("span.hover").click()