为什么我的Python网络爬虫会抛出一个无法与所选元素交互的错误?

问题描述 投票:0回答:1

我试图在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')

可能是因为页面加载速度不够快?

python selenium web-crawler
1个回答
0
投票

是的,你是对的,页面加载速度不够快。你可以用这行来解决这个问题,这样selenium到达页面后就会等待页面加载。

time.sleep(5)

如果5秒内还没有加载,你可以让它等待的时间更久。


0
投票

请看下面的帖子,它将帮助你等待页面加载。等到页面被Selenium WebDriver for Python加载时,才会出现。

这是另一种选择,而不是使用time.sleep()


0
投票

最简单也是最不浪费时间的,至于等待的时间会比必要的时间长。

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 应一些元素在新的页面上,你已经先定位。

© www.soinside.com 2019 - 2024. All rights reserved.