Selenium for Python:如何在同一网页的同一文本框中再次输入字符串数组?

2024-05-19 09:14:13 发布

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

我想使用pythonforselenium在Google中自动搜索字符串数组。在

下面是我用数字作为搜索查询编写的测试程序:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://google.com")
driver.implicitly_wait(10)
number = input('Enter a number: ')
for number in range(number,10):
    el = driver.find_element_by_id("lst-ib")
    el.send_keys(number)
    driver.implicitly_wait(10)
    el.submit()

For number=2:我得到的输出是搜索"23456789"

但我想要的输出是分别搜索2,3,4,5,6,7,8,9

有什么办法吗?我使用Eclipse中的PyDev作为编辑器。在

所以我用时间。睡觉在

^{pr2}$

我发现在执行submit()函数之前,所有从2到10的数字都被输入了。我想在执行3的循环之前执行submit()函数。在


Tags: 函数字符串fromnumberdrivergoogle数字数组
2条回答

这里的问题是,每次发送新的键时,它都会被附加到textfield中。这意味着它将搜索:

  • 23
  • 234
  • 2345个
  • 23456个
  • 234567个
  • 2345678个
  • 23456789号

要防止这种情况发生,只需在向元素发送新键之前清除该元素。在

from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://google.com")
driver.implicitly_wait(10)
number = input('Enter a number: ')
for number in range(number,10):
    el = driver.find_element_by_id("lst-ib")
    el.clear()
    el.send_keys(number)
    time.sleep(10)
    el.submit()

此外,强烈建议使用显式等待而不是隐式等待,因为这将对执行时间产生很大影响。在

这似乎奏效了:

from selenium import webdriver
import time

driver = webdriver.Firefox()
number = input('Enter a number: ')
for n in range(number,10):
    driver.get("http://google.com")
    el = driver.find_element_by_id("lst-ib")
    el.send_keys(n)
    time.sleep(2)
    driver.find_element_by_name("btnG").click()
    time.sleep(2)

driver.quit()

相关问题 更多 >

    热门问题