2016-10-12 52 views
1

**我在彈出的頁面上運行它。因此不能簡單地使用「輸入」類,因爲它與原始頁面發生衝突。遍歷硒python中的類

我想通過類迭代挑選出來的文字,從「項」級

from selenium import webdriver 
driver=webdriver.Firefox() 

enter image description here

當我拿起從鉻本elemnt的XPath的,它的未來是這樣

但這個心不是與driver.find_element_by_xpath(/html/body/span/div[1]/div/div[3])

但下面一個是工作,但它給我的日期,標題等工作但我只是想文本

driver.find_element_by_class_name("ui_overlay").text 

回答

1

試試這個XPath它將正確定位:

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

使用例:

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) 

它會打印出相應的文字

+0

我如何獲取文本。我使用這個 vinita

+1

嘗試我的示例代碼,它將幫助 – thebadguy

+0

@thebadguy rocks!但是,你能告訴我你怎麼能得到這個xpath?在我的Chrome中,當我右鍵單擊並複製xpath時,它的正好是/ html/body/span/div [1]/div/div [3] – shalini

0

考慮使用這樣的:

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

編輯的問題後: 此使用XPath則必須得到解決。

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

如果您提供的網頁正在使用,我可以使用更精確的xpath。

+0

這不會工作。我在一個彈出頁面上運行這個。因此不能簡單地使用「輸入」類,因爲它與原始頁面發生衝突。選擇「ui_overlay」可以幫助我進入彈出窗口。 – shalini