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

时间:2016-04-22 18:05:42

标签: python selenium for-loop

我想使用Python for Selenium自动搜索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()

对于number=2:我将输出作为"23456789"

的搜索

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

关于我如何做到这一点的任何想法?我在Eclipse中使用PyDev作为我的编辑。

所以我使用time.sleep

减慢了程序
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.send_keys(number)
    time.sleep(10)
    el.submit()

我发现在执行submit()函数之前,正在键入2到10之间的所有数字。我想在执行3的循环之前执行submit()函数。

2 个答案:

答案 0 :(得分:0)

这似乎有效:

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()

答案 1 :(得分:0)

这里的问题是每次发送新密钥时都会附加到文本字段。这意味着它将进行搜索:

  • 2
  • 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()

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