无法在python中使用selenium提交密钥

2024-10-16 11:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我尝试运行的代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time

#Create a new firefox session
browser=webdriver.Firefox()
browser.maximize_window()


#navigate to app's homepage
browser.get('http://demo.magentocommerce.com/')

#get searchbox and clear and enter details.
browser.find_element_by_css_selector("a[href='/search']").click()
search=browser.find_element_by_class_name('search-input')

search.click()
time.sleep(5)
search.click()
search.send_keys('phones'+Keys.RETURN)

但是,我无法使用send_键提交手机。 我是不是出了问题?在

第二,是否可以始终使用x-path来定位元素,而不依赖id/class/css选择等?在


Tags: andfromimportbrowsersearchgetbytime
1条回答
网友
1楼 · 发布于 2024-10-16 11:25:48

您感兴趣的输入元素具有search_query类名。要使其工作而不使用硬编码的time.sleep()延迟,请使用Explicit Wait并在向搜索输入元素发送键之前等待搜索输入元素可见。工作代码:

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

browser = webdriver.Firefox()
browser.maximize_window()
wait = WebDriverWait(browser, 10)

browser.get('http://demo.magentocommerce.com/')

browser.find_element_by_css_selector("a[href='/search']").click()

search = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "search-query")))
search.send_keys("phones" + Keys.RETURN)

相关问题 更多 >