2016-10-12 3 views
1

** Im Ausführen dieser auf einer Popup-Seite. Daher kann die Klasse "entry" nicht verwendet werden, da sie mit der ursprünglichen Seite kollidiert.iterieren durch Klassen in Selen Python

ich durch Klassen wiederholen möchte den Text auszuwählen, aus der „Eintrag“ Klasse

from selenium import webdriver 
driver=webdriver.Firefox() 

enter image description here

Als ich die XPath dieser elemnt aus Chrom holen, kommt seine ähnliche

aber das ist nicht mit driver.find_element_by_xpath(/html/body/span/div[1]/div/div[3]) Arbeits

aber unter einem arbeitet, aber sie mir Datum geben, Überschrift usw. Aber ich will nur den Text

driver.find_element_by_class_name("ui_overlay").text 

Antwort

1

dieses XPath Versuchen Sie es richtig finden wird:

".//span[@class = 'ui_overlay ui_modal ']//div[@class='entry']" 

Beispiel für die Verwendung:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
import time 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Chrome("C:\Jars\chromedriver.exe") 
driver.maximize_window() 
url="https://www.tripadvisor.com/Airline_Review-d8729164-Reviews-Cheap-Flights-TAP-Portugal#REVIEWS" 
driver.get(url) 

wait = WebDriverWait(driver, 10) 

langselction = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.sprite-date_picker-triangle"))) 
langselction.click() 
driver.find_element_by_xpath("//div[@class='languageList']//li[normalize-space(.)='Portuguese first']").click() 
gt= driver.find_elements(By.CSS_SELECTOR,".googleTranslation>.link") 
for i in gt: 
    i.click() 
    time.sleep(2) 
    x = driver.find_element(By.XPATH, ".//span[@class = 'ui_overlay ui_modal ']//div[@class='entry']") 
    print x.text 
    driver.find_element_by_class_name("ui_close_x").click() 
    time.sleep(2) 

Es wird der entsprechende Text

+0

Wie kann ich den Text bekommen? Ich bekomme diese Ausgabe nach dem vinita

+1

versuche meinen Beispielcode, es hilft – thebadguy

+0

@thebadguy rockt! Aber können Sie mir sagen, wie können Sie diesen XPath bekommen? In meinem Chrom, wenn ich rechts klicke und kopiere den Xpath, ist es nur/html/body/span/div [1]/div/div [3] – shalini

0

dies in Betracht ziehen:

for div in driver.find_elements_by_class_name("entry"): 
    do_something(div.text) 

Nach editierte Frage: Diese dann gelöst mit XPath werden müssen.

for div in driver.find_elements_by_xpath("//span/div/div/div[@class='entry']"): 
    do_something(div) 

Wenn Sie die Webseite zur Verfügung stellen, die Sie benutzen, kann ich noch präziseren xpath verwenden.

+0

Dies wird nicht funktionieren drucken. Ich führe das auf einer popup Seite aus. Daher kann die Klasse "entry" nicht verwendet werden, da sie mit der ursprünglichen Seite kollidiert. Die Auswahl von "ui_overlay" hilft mir, in das Popup zu gelangen. – shalini