2016-10-12 51 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