2016-05-26 2 views
0

Попытка сделать бота для сайта слишком чат с большим количеством учетных записей.Python selenium handle windows

for x in range(0,2): 
    project_dir = os.path.dirname(__file__) 
    chromedriver_path = os.path.join(project_dir, 'chromedriver.exe') 

    driver = webdriver.Chrome(chromedriver_path) 
    driver.get("https://*********/login") 

    user = driver.find_element_by_xpath("""//*[@id="username"]""") 
    user.send_keys(username[x]) 

    passs = driver.find_element_by_xpath("""//*[@id="loginForm"]/div[2]/input""") 
    passs.send_keys("***") 

    time.sleep(3) 
    driver.find_element_by_xpath("""//*[@id="loginForm"]/div[3]/button""").click() 


    driver.get("https://***/channel") 


x = driver.find_element_by_class_name("js-chat_input") 
while True: 
    enter = raw_input("Chat: ") 
    for i in range(0, 2): 
     g= driver.window_handles[i] 
     x.send_keys(enter) 
     driver.find_element_by_css_selector(".button.primary.float-right").click() 

Я хочу сделать так, что будет переключать окна тоже ввести то, что я вхожу в чате, если есть более простой способ, что вы знаете, я буду рад попробовать.

моя ошибка

", line 32, in <module> 
    g= driver.window_handles[i] 
IndexError: list index out of range 

ответ

0

Попробуйте это, я обновил цикл for, который вы использовали. Теперь цикл for будет повторяться в зависимости от вашего количества окон.

x = driver.find_element_by_class_name("js-chat_input") 
while True: 
    enter = raw_input("Chat: ") 
    for i in range(0, len(driver.window_handles)): 
     g= driver.window_handles[i] 
     x.send_keys(enter) 
     driver.find_element_by_css_selector(".button.primary.float-right").click() 
+0

Он избавился от ошибки, но только один из моего счета печатает –

+0

Они оба входа штраф, но когда я пытаюсь ввести что-то в чате, только мои один типы –

+0

проверить, если ваш XPath правильно или нет ? –

0

где window_handles и как он велик.

Я отладка коды, комментируя все, в то время как истинный цикл и печати длину driver.window_handles

while True: 
    #enter = raw_input("Chat: ") 
    #for i in range(0, 2): 
     #g= driver.window_handles[i] 
     #x.send_keys(enter) 
     #driver.find_element_by_css_selector(".button.primary.float-right").click() 

    print(len(driver.window_handles)) 

это даст вам старт, почему ваш индекс находится вне диапазона при работе ваша итерация

Смежные вопросы