我在浏览器中尝试过,效果很好:
('button[data-item-id="1054079703"]')[0].click()
当我尝试使用Splinter:时
browser.find_by_css('button[data-item-id="1054079703"]')
返回Splinter对象:
[<splinter.driver.webdriver.WebDriverElement object at 0x1108c6c90>]
我可以看到它正在找到正确的元素:
browser.find_by_css('button[data-item-id="1054079703"]').first.html
u'this_is_what_im_looking_for'
但当我点击它时:
browser.find_by_css('button[data-item-id="1054079703"]').first.click()
我得到错误:
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
为了验证,返回False
browser.find_by_css('button[data-item-id="1054079703"]').first.visible
为什么我可以使用jQuery在浏览器中选择它,但它在Splinter中不可见?
有时,无论出于何种原因,硒都会确定元素不可见,而实际上它是可见的。
最好检查你的css,以确保没有任何东西覆盖它,只是为了确定。
如果您确信它是可见的,请尝试使用execute_script
browser.execute_script("document.getElementsByClassName('myclass')[0].click()")