2017-10-14 76 views
0

所以我很新的硒和IM跟随文档做一些机器人, 但当我尝试登录到社交媒体网络(Twitter/Instagram)它不发送笔画。硒蟒蛇没有登录到社交媒体

代码:

#!usr/bin/env python3 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 
browser = webdriver.Firefox() 
browser.get("https://www.instagram.com/accounts/login/") 
elem = browser.find_element_by_name("username") 
elem.send_keys('Laptops' + Keys.RETURN) 
time.sleep(4) 
browser.quit() 

我已经using- browser.get_element_by_name /班/ XPath的,但没有尝试过它似乎工作。 错误代码:

Traceback (most recent call last): 
    File "ig.py", line 50, in <module> 
    login(driver) 
    File "ig.py", line 15, in login 
    driver.find_element_by_xpath("//div/input[@name='username']").send_keys(username) 
    File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 365, in find_element_by_xpath 
    return self.find_element(by=By.XPATH, value=xpath) 
    File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 843, in find_element 
    'value': value})['value'] 
    File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute 
    self.error_handler.check_response(response) 
    File "/home/lario/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //div/input[@name='username'] 

OS = ubuntu17 司机=火狐/ geckodriver python3.6 selenium3.6

我知道这个代码不应该工作BC你需要密码和用户名,但它不甚至执行send_keys代码,因为上面的线上的错误tHAT

+0

使用一些隐含的等待。试试这个,让我知道'browser.get('https://www.instagram.com/accounts/login/'); ('Laptops')' – NarendraR

+0

这里显示错误'/ div/input [@ name ='username']''。你提到这个我没有看到这个? – NarendraR

+0

感染它在铬中工作正常 – NarendraR

回答

0

尝试添加等待状态存在条件。但是,如果元素被禁用,直到执行一些检查,它可能需要EC.element_to_be_clickable。

from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait 
... 

usernamefield = WebDriverWait(self.driver, 10)\ 
    .until(EC.presence_of_element_located((By.NAME, 'username'))) 
usernamefield.send_keys("Laptops") 
passwordfield = WebDriverWait(...