使用Selenium和Python无法通过xpath定位元素

VectorElector

我正在用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:否这样的元素:无法找到元素:{“ method”:“ xpath”,“ selector”:“ // * [@ id =” loginForm“] / div / div [1]”}

它找不到要在其中写入的用户名表单。我相信不会有iframe,我不知道是否还有其他问题阻止驾驶员找到它。我还很新,所以我还不能上传页面html的图像,这就是为什么我包括打开页面的行。谁能提出一个万无一失的解决方案?

乔加特

从我可以看到有两个问题。

您正在尝试调用send_keys()一个div元素。您可能正在寻找的是input元素,它嵌套在该div元素内部

这可以通过稍微更改XPATH来获得:

element = self.driver.find_element_by_xpath('//*[@name="username"]')
element.send_keys('...')

另一个可能的问题是元素并不总是立即加载-有时您必须等待元素出现在HTML中才能找到它。这可以通过使用Webdriver.Wait()

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait for the element to appear in the HTML for a maximum of 10 seconds
element = WebDriverWait(self.driver, 10).until(
    EC.presence_of_element_located((By.NAME, "username"))
)

# Send input to the element
element.send_keys('...')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尽管 xPath 无法使用 Selenium Python 定位元素

NoSuchElementException:消息:尝试使用Selenium和Python定位元素时无法定位元素

无法使用 python 和 selenium 定位元素

无法在Selenium和Python中使用OR定位元素

无法使用 Selenium Python 定位元素

无法使用Selenium Python定位元素

无法通过xpath定位元素

无法在xpath中使用和条件定位元素

无法使用ID和xpath定位元素

无法在xpath中使用和条件定位元素

Python中的Selenium显示无法使用xpath表达式定位元素

无法使用 Python Selenium fin_element_by_xpath 定位元素

无法定位元素:通过 Selenium 和 Python 单击按钮时

NoSuchElementException:消息:尝试通过 Selenium 和 Python 单击 VISA 按钮时无法定位元素

在Selenium和Java中无法使用className定位元素

无法使用python编写的xpath在硒中定位元素

无法通过 Python 使用 selenium 按类名定位元素。为什么这样?

无法使用Xpath定位元素

使用Selenium和python通过CssSelector的“ begins with”方法定位元素

无法在python中使用Selenium Webdriver定位元素

无法在 python 上使用 selenium webdriver 定位元素

如何使用try-expect跳过硒无法使用Selenium和Python定位元素的情况

Python Selenium没有这样的元素:移动到元素操作后无法使用xpath定位元素

如何使用Selenium和Python在iFrame中定位元素

Selenium无法定位元素(Python)

无法在 Python 中定位元素 - Selenium

无法定位元素 _ Python Selenium

Python Selenium 无法定位元素

使用 Python 和 Selenium 进行抓取问题(无法定位元素)