我想使用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()函数。
答案 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)
这里的问题是每次发送新密钥时都会附加到文本字段。这意味着它将进行搜索:
在向其发送新密钥之前,您需要做的就是清除元素。
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()
强烈建议使用显式等待而不是隐式等待,因为这会对执行时间产生很大影响。