我正在用Python创建一个Selenium机器人。驱动程序应该打开instagram.com并使用用户凭据作为输入填写登录表单。有一个错误:
# FIRST I OPEN INSTAGRAM LIKE THIS
self.driver.get("https://www.instagram.com/")
# THEN A POP-UP APPEARS, AND I CLOSE IT BY CLICKING IN THE ACCEPT BUTTON,
# IT SEEMS LIKE IT IS NOT AN IFRAME SO NO FRAME SWITCHES ARE NEEDED
cooki = self.driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/button[1]')
cooki.click()
# NOW I TRY TO FIND THE USERNAME FORM TO WRITE IN AN INPUT
usbar = self.driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[1]') # ERROR HERE
usbar.send_keys(input('Username: '))
错误显示:
NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id=“loginForm”]/div/div[1]”
它找不到要写入的用户名表单。我相信没有iFrame在路上,我不知道是否有任何其他问题阻止司机找到它。我是一个新手,所以我还不能上传页面html的图片,这就是为什么我要加入打开页面的那一行。谁能想出一个万无一失的解决办法
从我看来有两个问题
您正试图在
div
元素上调用send_keys()
。您可能要查找的是input
元素,它嵌套在div
元素中这可以通过稍微更改XPATH来实现:
另一个可能的问题是,元素并不总是立即加载的——有时您必须等待元素出现在HTML中,然后才能找到它。这可以通过使用^{} 来实现
您可以使用Google Chrome中的inspect查找完整的xpatch。 然后,您的代码变成:
相关问题 更多 >
编程相关推荐