2017-03-11 5 views
0

Senden Sie Schlüssel funktioniert nicht auf Mac OS X, oder vielleicht mache ich etwas falsch. Vielleicht referenziere ich die Schlüssel falsch.Selen senden Schlüssel funktioniert nicht

Ich versuche, jeden Link zu klicken in einem neuen Tab

Irgendwelche Vorschläge zu öffnen?

Main.py

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



driver = webdriver.Chrome() 
driver.get('https://orlando.craigslist.org/search/cta') 

owl = driver.find_element_by_xpath('//*[@id="sortable-results"]/ul/li/p/a') 
res = 1 
size = len(driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a')) 

def run(): 
    for i in range(0, size): 
     owl = driver.find_elements_by_xpath('//*[@id="sortable-results"]/ul/li/p/a') 
     owl[i].click().send_keys(Keys.COMMAND + 't') 
     driver.find_element_by_xpath('/html/body/section/header/nav/ul/li[3]/p/a').click() 
     if i == 1: 
      break 


if __name__ == '__main__': 
    run() 

Hier ist der Fehler

Traceback (most recent call last): 
    File "main.py", line 24, in <module> 
    run() 
    File "main.py", line 17, in run 
    owl[i].click().send_keys(Keys.COMMAND + 't') 
AttributeError: 'NoneType' object has no attribute 'send_keys' 

Antwort

0

Aufgrund meiner Erfahrung mit Selenium WebDriver auf .Net, die .click() ist ein Element nicht zurück. Es gibt nichts zurück. Es bewirkt, dass ein Element angeklickt wird, was in diesem Fall dazu führen würde, dass eine neue Seite in die aktuelle Instanz des Treibers geladen wird. Ich denke, das ist was hier passiert.

Ich empfehle als Alternative, Sie sollten alle "href" Attribute in all diesen < a> Elemente in einem Array sammeln, dann öffnen Sie eine neue Registerkarte für jedes und wechseln Sie auf die neue Registerkarte mit der Antwort hier how to open a link in new tab (chrome) using selenium webdriver?. Nachdem Sie eine neue Registerkarte geöffnet und zu dieser gewechselt haben, laden Sie die Seite mit driver.get().