selenium searchbox.send_keys()无法自己在栏上写入任何文本

jtw3ybtb  于 2022-12-29  发布在  其他
关注(0)|答案(3)|浏览(382)
[from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://youtube.com')
searchbox = driver.find_element("xpath",'//*[@id="search"]')
searchbox.send_keys("Akram Khan")
searchButton = driver.find_element("xpath",'//*[@id="search-icon-legacy"]')
searchButton.click()]

https://i.stack.imgur.com/egHm1.png

    • 函数[searchbox. send_keys("Akram Khan")]必须在YouTUbe的搜索框中写入所提到的文本("Akram Khan")。**
slwdgvem

slwdgvem1#

所以问题是,当您第一次尝试获取当前版本的searchbox元素时,它搜索的是id='search'元素的第一个匹配项,而该元素之前没有连接到搜索框(因此,对该元素的send_keys()不起作用)。你可以通过指定当前代码中的标记来获得你想要的特定元素,方法是执行以下操作(因为input元素是你想要发送响应的目标):

searchbox = driver.find_element("xpath",'//input[@id="search"]')
wa7juj8i

wa7juj8i2#

send_keys()方法无法按预期将文本写入搜索框的原因可能有多种。您可以尝试以下几种方法:
1.请确保您要写入的元素确实是搜索框。您可以在浏览器的开发者工具中检查该元素,并将其与您要写入的元素进行比较。
1.请确保该元素未被禁用或为只读。如果该元素被禁用或为只读,则send_keys()方法将无法对其进行写入。
1.请确保该元素可见并且未被其他元素遮挡。如果元素在页面上不可见,则send_keys()方法将无法写入该元素。
1.请确保没有遇到任何同步问题。如果页面仍在加载或搜索框尚未交互,则send_keys()方法可能会失败。在这种情况下,可以尝试使用selenium.webdriver.common.by模块中的WebDriverWait类等待元素变为交互,然后再尝试写入元素。

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

 wait = WebDriverWait(driver, 10)
 searchbox = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="search"]')))
 searchbox.send_keys("Akram Khan")
dzhpxtsq

dzhpxtsq3#

@id ='search'正在反映到元素列表,因此请使用唯一元素,如@name ='search-query'

相关问题