2016-09-16 59 views
-1

我想在python中使用selenium在这里登录:https://www.netflix.com/Login。 我已经试过与此代码:创建一个自动脚本,登录到netflix

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://www.netflix.com/Login") 
while True: 
    element = driver.find_element_by_css_selector("ui-text-input[name = 'email']") 
    driver.execute_script("arguments[0].setAttribute('value','test1')", element) 
    element2 = driver.find_element_by_css_selector("ui-text-input[name = 'password']") 
    driver.execute_script("arguments[0].setAttribute('value','test1')", element2) 
    driver.refresh() 

但它提出了在这行代码发生错误:

Traceback (most recent call last): 
    File "netflixlogin.py", line 6, in <module> 
    element = driver.find_element_by_css_selector("ui-text-input[name = 'email']") 
    File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 437, in find_element_by_css_selector 
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector) 
    File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 752, in find_element 
    'value': value})['value'] 
    File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"ui-text-input[name = 'email']"} 
Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpk_odq6d0/extensions/[email protected]/components/driver-component.js:10770) 
    at FirefoxDriver.prototype.findElement (file:///tmp/tmpk_odq6d0/extensions/[email protected]/components/driver-component.js:10779) 
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpk_odq6d0/extensions/[email protected]/components/command-processor.js:12661) 
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpk_odq6d0/extensions/[email protected]/components/command-processor.js:12666) 
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpk_odq6d0/extensions/[email protected]/components/command-processor.js:12608) 

所以这是在这行代码的问题:

element = driver.find_element_by_css_selector("ui-text-input[name = 'email']") 

也许错误的语法?我开始使用硒最近,所以我还是不太好

更新后的脚本与不是错误,但它不会仍然工作:

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://www.netflix.com/Login") 
while True: 
    element = driver.find_element_by_css_selector("form.login-form input[name=email]") 
    driver.execute_script("arguments[0].setAttribute('value','test1')", element) 
    element2 = driver.find_element_by_css_selector("form.login-form input[name=password]") 
    driver.execute_script("arguments[0].setAttribute('value','test1')", element2) 
    driver.refresh() 

解决。工作脚本:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("https://www.netflix.com/it/") 
login = driver.find_element_by_css_selector(".authLinks.signupBasicHeader") 
login.click() 
element = driver.find_element_by_name("email") 
element.send_keys("[email protected]") 
submit = driver.find_element_by_css_selector(".btn.login-button.btn-submit.btn-small") 
submit.click() 
element2 = driver.find_element_by_name("password") 
element2.send_keys("test1") 
submit2 = driver.find_element_by_css_selector(".btn.login-button.btn-submit.btn-small") 
submit2.click() 

回答

0

呀,ui-text-input[name = 'email']选择不会在本页面匹配任何内容,因为在页面上没有<ui-text-input>元素,但有一个inputui-text-input类。修复您的选择:

form.login-form input[name=email] 

顺便说一句,反而,while True方法,使用built into selenium mechanism to wait for specific conditions to happen on a page

而且,你不应该先选择登录类型(电子邮件/电话)吗?

+0

好,谢谢,现在它不显示任何错误,但它不写邮件测试1和test1密码都用命令:driver.execute_script(“论据[0] .setAttribute(‘值’, 'test1')“,元素) – CatchJoul

0

我认为下面是硒

driver.findElement(By.cssSelector("ui-text-input[name = 'email']")) 
-1

解决语法CSS选择器。

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("https://www.netflix.com/it/") 
login = driver.find_element_by_css_selector(".authLinks.signupBasicHeader") 
login.click() 
element = driver.find_element_by_name("email") 
element.send_keys("[email protected]") 
submit = driver.find_element_by_css_selector(".btn.login-button.btn-submit.btn-small") 
submit.click() 
element2 = driver.find_element_by_name("password") 
element2.send_keys("test1") 
submit2 = driver.find_element_by_css_selector(".btn.login-button.btn-submit.btn-small") 
submit2.click()