2017-04-20 4 views
2

Hier ist die Links an dem ich arbeite:CSS-Locator: unable Element über Code lokalisieren

https://www.formula1.com/en/results.html/2017/drivers.html

Im Versuch, alle Namen Spalte unter Treiber abzurufen.

Im Folgenden ist der CSS-Selektor Im in Code

dname = name.find_element_by_css_selector('span.hide-for-mobile').text 

Testen Sie den Code in CSS-Selektor plugins.See den Screenshot enter image description here

Unten ist der Code:

from selenium import webdriver 
import os 
import csv 

chromeDriver = "/home/manoj/workspace2/RedTools/test/chromedriver" 
os.environ["webdriver.chrome.driver"] = chromeDriver 
driver = webdriver.Chrome(chromeDriver) 
driver.get("https://www.formula1.com/en/results.html/2017/drivers.html") 

driverNames = driver.find_elements_by_xpath("//th[contains(.,'Driver')]") 

for name in driverNames: 
    dname = name.find_element_by_css_selector('span.hide-for-mobile').text 
    print(dname) 
    print('its done') 

Der Fehler Ich bekomme in diesem Moment:

selenium.common.exceptions.NoSuchElementException: Mitteilung: kein solches Element: Kann nicht Element lokalisieren: { "Methode": "CSS selector", "Selektor": "span.hide-for-Mobile"

}

Was macht das falsch? Hilfe hier würde sehr geschätzt werden.

Antwort

2

Sie versuchen, für span Elemente zu suchen, die Kinder jeder th in driverNames Liste sind ... Aber th hat keine untergeordneten Elemente

Sie

names = [pilot.text for pilot in driver.find_elements_by_css_selector('span.hide-for-mobile')] 

verwenden könnten Liste zu erhalten von Namen

+0

Perfect..Danks viel @Andersson –

0
driver.get("https://www.formula1.com/en/results.html/2017/drivers.html"); 
Thread.sleep(200); 
for(int i=1;i<=driver.findElements(By.xpath("//tr/td[3]")).size();i++) 
{  System.out.println(driver.findElement(By.xpath("html/body/div[2]/main/article/div /div[2]/div[2]/div[2]/div/table/tbody/tr["+i+"]/td[3]")).getText()); 
} 

Ich versuchte dies in Java, können Sie conve Rt es in Python als Ihr Wissen