输入到隐藏的文本框中,然后按Enter键(Selenium,Python)

时间:2019-04-23 09:19:20

标签: python selenium xpath

我正在尝试在此网站https://lamerfashion.com上的搜索输入框中输入文本字符串“ L62T18H029-P3215”,然后按Enter。

我试图执行一些javascript来更改隐藏元素的值,但是我无法让Selenium发送ENTER键来提交。

driver = webdriver.Chrome(ChromeDriver)

driver.get("https://lamerfashion.com")

element = WebDriverWait(driver,20).until(EC.presence_of_element_located((By.XPATH, '//a[@class="search-icon"]')))

element.click()

e = driver.execute_script("return document.getElementsByName('type')[0].value;")

print(e)

driver.execute_script("document.getElementsByName('type')[0].value='L62T18H029-P3215';")

e = driver.execute_script("return document.getElementsByName('type')[0].value;")

print(e)

输出:

product

L62T18H029-P3215

3 个答案:

答案 0 :(得分:2)

我在Java中运行脚本,也许可以帮到您。尝试一下(供参考)

WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://lamerfashion.com");

WebElement newSearch = driver.findElement(By.className("search-icon")););
newSearch.click();
Thread.sleep(1000);
WebElement searchpro = driver.findElement(By.xpath("//*[@id=\"navbar\"]/div/ul[2]/li[1]/form/input[2]"));

searchpro.sendKeys("L62T18H029-P3215");
searchpro.sendKeys(Keys.ENTER);

答案 1 :(得分:1)

我在这里看不到需要JS。
您可以简单地使用硒中已经存在的send_keys方法。

代码:

driver = webdriver.Chrome(executable_path = r'chromedriverpath')
wait = WebDriverWait(driver,10)

driver.maximize_window()

driver.get("https://lamerfashion.com")

wait = WebDriverWait(driver, 10)

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a.search-icon'))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@class='search-icon']/following-sibling::form/input[@name='q']"))).send_keys("L62T18H029-P3215")  

进口:

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 

答案 2 :(得分:0)

看到该网站,有两个输入,而其中一个带有 隐藏 的输入实际上可能不是您所需要的。

尝试相同的操作,但是名称为“ q”

此外,尝试使用Selenium命令

element.send_keys('text_you_want')-应该足以代替JS