为什么 Selenium 找不到具有此 XPath 表达式的元素?

Why doesn’t Selenium find an element with this XPath expression?

提问人:muhyrla 提问时间:11/10/2022 最后编辑:Peter Mortensenmuhyrla 更新时间:11/16/2022 访问量:60

问:

我正在尝试使用此 XPath 表达式找到一个元素:

/html/body/div/div[1]/div/div/div[2]/div/div/div/div[2]/form/div[1]/div[3]/div/input

但是Selenium找不到。

我尝试访问的页面 - https://account.aax.com/en-US/login/

我已经尝试过自己走这条路了,这很好。

python selenium chrome-web-driver

评论


答:

1赞 Prophet 11/10/2022 #1
  1. 您错过了延迟。 应该用于此。WebDriverWaitexpected_conditions
  2. 你必须改进你的定位器。

以下代码有效:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)

url = "https://account.aax.com/en-US/login/"

driver.get(url)

wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='MuiInputBase-input MuiOutlinedInput-input']"))).click()

评论

0赞 muhyrla 11/10/2022
我用这个,这不是你的意思吗?driver.implicitly_wait(5)
0赞 Prophet 11/10/2022
如果您尝试单击该元素或在那里发送文本,这是不够的,因为仅在我们需要在更成熟的阶段找到元素时,当它能够接受单击等时,即完全渲染时,才会为元素的存在设置超时。implicitly_wait