【问题标题】:python selenium click nth elementpython selenium单击第n个元素
【发布时间】:2013-10-15 18:51:13
【问题描述】:

下面是经过检查的代码,当鼠标悬停在图像上方时,基本上我希望单击图像....

<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>

我正在使用 python selenium,并尝试了以下单击跨度(悬停)链接

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()

更新

也试过actionchains,鼠标点击..还是不行..

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()

【问题讨论】:

  • 在您的解决方案中,悬停(变量名)是否与稍后在“span.hover”上调用的相同?
  • no..第一个悬停是一个变量..第二个是 span 标签的类名

标签: python linux selenium


【解决方案1】:

您的代码缺少()。如果没有(),则不会调用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()

【讨论】:

  • 谢谢,现在我明白了... ElementNotVisibleException: Message: u'Element is not current visible and so may not be interacted with' ;堆栈跟踪:
  • @krisdigitx,该元素不包含任何文本。如果我向元素添加一些文本,它会起作用。
  • 这里一样,显示元素不存在,这是主要的html源,pastebin.com/4h6aSvFp
  • @krisdigitx,新的 html 源不包含该元素。 ??
  • 是的,我认为它是动态的
【解决方案2】:

这行得通:

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()

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2010-09-20
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    相关资源
    最近更新 更多