我试图在Youtube搜索框中输入简单的内容。我得到了这个错误。
selenium.common.exceptions.ElementNotVisibleException: 消息:元素不可交互
这是我的代码。
from selenium import webdriver
browser = webdriver.Opera()
browser.set_window_position(0,0)
browser.set_window_size(1366, 768)
browser.get('https://youtube.com')
elem = browser.find_element_by_xpath('//*[@id="search"]')
elem.click()
elem.sendkeys('cats')
可能是因为页面加载速度不够快?
是的,你是对的,页面加载速度不够快。你可以用这行来解决这个问题,这样selenium到达页面后就会等待页面加载。
time.sleep(5)
如果5秒内还没有加载,你可以让它等待的时间更久。
请看下面的帖子,它将帮助你等待页面加载。等到页面被Selenium WebDriver for Python加载时,才会出现。
这是另一种选择,而不是使用time.sleep()
最简单也是最不浪费时间的,至于等待的时间会比必要的时间长。
browser = webdriver.Opera()
browser.implicitly_wait(10) # or even longer than 10 seconds
然后在你做完一个 elem.click()
接着 browser.find_by_xpath()
在新页面上寻找某个元素(或使用其他方法来定位元素),驱动程序将在点击后等待你要寻找的元素出现,最长时间为10秒,然后才会超时(当然,如果新页面下来的速度更快,你将只需等待你必须等待的时间)。
您的 elem.sendkeys
应是 elem.send_keys
且一定 elem
应一些元素在新的页面上,你已经先定位。