Selenium:模拟人类的打字行为

时间:2015-09-28 16:55:59

标签: python list firefox selenium selenium-webdriver

我想使用Selenium模拟人类输入,我已经为此编写了一个代码,但我不知道如何继续它。

我想让我的代码将lst的'thing1'元素输入变量elem webelement,将列表的第二个元素输入变量elem2 webelement。现在,我不知道我该怎么做。我尝试了很多方法,但代码没有像预期的那样工作。任何想法都将受到高度赞赏。

lst = ['thing1', 'thing2']
dt = webdriver.Firefox()
dt.get('some url')
elem = dt.find_element_by_id('some id')
elem2 = dt.find_element_by_id('some id 2')
#Breaking elements into keystrokes
for i in lst:
    for ii in i:
        time.sleep(random.randint(1.10))
        elem.send_keys(ii)
        #What to do from now on?

1 个答案:

答案 0 :(得分:2)

目前,您要将这两个文本都输入elem元素。

您可以改为定义元素+文本对:

def human_type(element, text):
    for char in text:
        time.sleep(random.randint(1,10)) #fixed a . instead of a ,
        element.send_keys(char)


pairs = [(elem, "thing1"), (elem2, "thing2")]
for element, text in pairs:
    human_type(element, text)

您还可以使用zip()制作pairs列表:

lst = ['thing1', 'thing2']
elements = [elem, elem2]

pairs = zip(elements, lst)