1

名字我尝试远程登录到Twitter和使用硒和铬webdriver的鸣叫发现Twitter的元素,但我似乎无法得到它之前,我做任何事情我想只测试是否我可以写入用户名和密码区域,但我甚至不能这样做。不能使用硒和铬的webdriver

这里是我的代码:

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


driver = webdriver.Chrome() 

driver.get("https://twitter.com") 
elem = driver.find_element_by_name("session[username_or_email]") 
elem.send_keys("test") 
elem.send_keys(Keys.RETURN) 

当我尝试这一点,打开命令提示符下运行chromedriver.exe然后打开铬窗口,但再没有什么事情发生,这让我这个错误消息:

Traceback (most recent call last): 
File "C:\Python27\Project\Auth2.py", line 10, in <module> 
    elem.send_keys("test") 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line  162, in send_keys 
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 228, in _execute 
    return self._parent.execute(command, params) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 165, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 152, in check_response 
    raise exception_class(message, screen, stacktrace) 
NoSuchWindowException: Message: u'no such window: target window already closed\nfrom  unknown error: web view not found\n (Session info: chrome=26.0.1410.64)\n (Driver info:  chromedriver=0.8,platform=Windows NT 5.1 SP3 x86)' 

谁能告诉我什么是问题,以及如何解决它!

+0

我得到它的工作我想我只是需要使用'driver.find_element_by_id',而不是'driver.find_element_by_name'和它的工作就好了! – Serial 2013-05-05 22:35:14

+0

但现在我想知道如果我可以做到这一点出窗口弹出? – Serial 2013-05-05 22:38:20

回答

0

是的,find_element_by_id,find_element_by_xpathfind_element_by_css_selector应该用在这种特殊情况下。

我怀疑elem = driver.find_element_by_name("session[username_or_email]")将不会工作,因为方括号。

对于谁比谁需要处理使用Selenium方括号,使用CSS选择器或XPath如下面的例子应该更容易(方括号中的类名在这个例子中):

<label class="username js-username"> 
    <span>Username or email</span> 
    <input class="session[username_or_email]" type="text" autocomplete="on" /> 
</label> 
# I suspect this won't work? 
driver.find_element_by_class_name("session[username_or_email]") 

# won't work, as the special meaning of square brackets in css selector 
driver.find_element_by_css_selector(".session[username_or_email]") 

# use these 
driver.find_element_by_css_selector("[class='session[username_or_email]']") 
driver.find_element_by_xpath("//*[@class='session[username_or_email]']") # same as usual 
0

这是为我工作

EmailElement = driver.find_element_by_name('session[username_or_email]') 

PasswordElement = driver.find_element_by_name('session[password]') 

EmailElement.send_keys('email/username_goes_here') 

PasswordElement.send_keys('password_goes_here')