提问人:yummybagels 提问时间:8/7/2023 最后编辑:undetected Seleniumyummybagels 更新时间:8/8/2023 访问量:108
如何使用 Selenium 在嵌套 div 中定位输入元素
How to locate the input element within nested divs using Selenium
问:
我在定位元素时遇到问题,想将文本“hello”放入文本框中。<input class='search-text'...>
我的网络驱动程序代码如下
driver.find_element(By.XPATH, "//ul[@class='filter-panel']//li[@class='filter-selection']//filter-selector//div[@class=filter-component]//div//div[@class='search-box-wrapper']/input[@class='search-text']").send_keys("hello")
这导致:
Exception has occurred: NoSuchElementException
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//ul[@class='filter-panel']//li[@class='filter-selection']//filter-selector//div[@class=filter-component]//div//div[@class='search-box-wrapper']/input[@class='search-text']"}
我希望“你好”这个词能放在搜索中......箱。
“搜索...”输入框的 HTML 快照:
有人有什么想法吗?谢谢!
答:
0赞
undetected Selenium
8/8/2023
#1
给定 html:
所需的元素是动态元素。
溶液
理想情况下,要将字符序列发送到元素,您需要诱导 WebDriverWait 的 element_to_be_clickable(),并且可以使用以下任一定位器策略:
使用CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.search-text[aria-label='Enter text for search by keyword']"))).send_keys("yummybagels")
使用 XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='search-text' and @aria-label='Enter text for search by keyword']"))).send_keys("yummybagels")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
评论