提问人:muhyrla 提问时间:11/10/2022 最后编辑:Peter Mortensenmuhyrla 更新时间:11/16/2022 访问量:60
为什么 Selenium 找不到具有此 XPath 表达式的元素?
Why doesn’t Selenium find an element with this XPath expression?
问:
我正在尝试使用此 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/
我已经尝试过自己走这条路了,这很好。
答:
1赞
Prophet
11/10/2022
#1
- 您错过了延迟。 应该用于此。
WebDriverWait
expected_conditions
- 你必须改进你的定位器。
以下代码有效:
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
评论