使用 XPath 无法识别输入窗口

问题描述 投票:0回答:1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# Set up the webdriver (you need to have the appropriate browser driver installed, like chromedriver)
driver = webdriver.Chrome()

# Open myguichet.lu
driver.get("https://www.myguichet.lu")

#Time for me to log in into the page
time.sleep(60)

# Find the search box using XPath and input "1000"
search_box = driver.find_element_by_xpath("//input[@id='fieldN20DA0']")
search_box.send_keys("1000")

# Wait for a few seconds to see the result
time.sleep(5)

# Close the browser
driver.quit()

必须在文本框中输入特定数字,但该字段无法识别。我已经实现了一个睡眠计时器,以便我可以自己登录并导航到文本框所在的页面。我没有对我的代码进行任何复杂的添加,并验证是否存在 iframe,这会阻止输入框。

我尝试通过 id、name 和 css.selector 查找元素。我还尝试过使用同一网站上的其他输入字段,效果很好。我还检查了没有 iframe。

python selenium-webdriver webdriver
1个回答
0
投票

在您提供的网站上,只有一个可见的输入(Rechercher sur le site)。

它的名称为“q”,ID 为“search-field-top”。但您正在搜索 id 为“fieldN20DA0”的输入。页面上不存在具有此类 id 的元素。

您可以打开 Chrome 开发工具 (F12),导航到“元素”选项卡,然后使用 Ctrl+F 搜索或测试您的选择器。

另一点是您没有更改打开的浏览器窗口的大小。您的网站结构有点奇怪。如果您将浏览器窗口宽度更改为 ~50%,输入和其他几个元素将会消失。

默认情况下,驱动程序打开的浏览器窗口并不是很宽。因此,您必须设置预期的窗口大小,或只是最大化窗口。

以下代码对我来说效果很好:

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

driver = webdriver.Chrome()
driver.maximize_window()
wait = WebDriverWait(driver, 10)

try:
    driver.get("https://www.myguichet.lu")

    input_el = wait.until(EC.visibility_of_element_located((By.ID, 'search-field-top')))
    input_el.send_keys("1000")
    time.sleep(5)
finally:
    driver.quit()
© www.soinside.com 2019 - 2024. All rights reserved.