2016-03-29 21 views
1

Merhaba, Selenium WebDriver Java ile ilgili bir sorunum var. ben bu kodu kullandığınızda, selenium ile metin alamıyor

public static void main(String[] args) { 
     try{ 

      File salida= new File("salidas/Salida.txt"); 
      FileWriter fw = new FileWriter(salida); 
      PrintWriter volcado = new PrintWriter(fw); 

     System.setProperty("webdriver.chrome.driver", "path to\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 
     driver.get("http://ranking-empresas.eleconomista.es/REPSOL-PETROLEO.html"); 


     String name = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[1]/td[2]")).getText(); 
     String obj_soc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[2]/td[2]")).getText(); 
     String direcc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[3]/td[2]")).getText(); 
     String loc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[4]/td[2]")).getText(); 
     String tel = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[5]/td[2]")).getText(); 
     String url = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[8]/td[2]")).getText(); 
     String actividad = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[9]/td[2]")).getText(); 

      volcado.print(name+" "+obj_soc+" "+direcc+" "+loc+" "+tel+" "+url+" "+actividad);  
      volcado.close(); 
      driver.close(); 


    }catch(Exception e){ 

     e.printStackTrace(); 

    }} 

(element.click(); kullanmadan çalıştığını) ama ben böyle element.click(); önceki sayfaya göre erişmek istediğinizde sorun cames:

System.setProperty("webdriver.chrome.driver", "path to\\chromedriver.exe"); 

WebDriver driver = new ChromeDriver(); 
     driver.get("http://ranking-empresas.eleconomista.es/ranking_empresas_nacional.html"); 

     WebElement element = driver.findElement(By.xpath("//*[@id=\"tabla-ranking\"]/table/tbody/tr[1]/td[7]/a")); 
     element.click(); 

     String name = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[1]/td[2]")).getText(); 
     String obj_soc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[2]/td[2]")).getText(); 
     String direcc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[3]/td[2]")).getText(); 
     String loc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[4]/td[2]")).getText(); 
     String tel = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[5]/td[2]")).getText(); 
     String url = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[8]/td[2]")).getText(); 
     String actividad = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[9]/td[2]")).getText(); 

      volcado.print(name+" "+obj_soc+" "+direcc+" "+loc+" "+tel+" "+url+" "+actividad);  
      volcado.close(); 




      driver.close(); 


    }catch(Exception e){ 

     e.printStackTrace(); 

    }} 

Selenyum tarayıcısı açılır, ve sayfalar ama değişkenlerim xpath metnini almaz.

cevap

0

Verileri, metni almaya çalıştığınız anda sayfada mevcut değil. Onları okumadan önce veri bekleyin ve ince olmalıdır:

driver.get("http://ranking-empresas.eleconomista.es/ranking_empresas_nacional.html"); 

driver.findElement(By.xpath("//*[@id=\"tabla-ranking\"]/table/tbody/tr[1]/td[7]/a")).click(); 

// wait for the data to be present 
List<WebElement> cells = wait.until(
    ExpectedConditions.presenceOfAllElementsLocatedBy(
    By.xpath("//h3[.='Datos comerciales de REPSOL PETROLEO SA']/following::tbody[1]/tr/td[2]"))); 

String name = cells.get(0).getText(); 
String obj_soc = cells.get(1).getText(); 
String direcc = cells.get(2).getText(); 
String loc = cells.get(3).getText(); 
String tel = cells.get(4).getText(); 
String url = cells.get(7).getText(); 
String actividad = cells.get(8).getText(); 
:

WebDriver driver = new ChromeDriver(); 
WebDriverWait wait = new WebDriverWait(driver, 10); 

driver.get("http://ranking-empresas.eleconomista.es/ranking_empresas_nacional.html"); 

driver.findElement(By.xpath("//*[@id=\"tabla-ranking\"]/table/tbody/tr[1]/td[7]/a")).click(); 

// wait for the data to be present 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("business-profile"))); 

String name = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[1]/td[2]")).getText(); 
String obj_soc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[2]/td[2]")).getText(); 
String direcc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[3]/td[2]")).getText(); 
String loc = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[4]/td[2]")).getText(); 
String tel = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[5]/td[2]")).getText(); 
String url = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[8]/td[2]")).getText(); 
String actividad = driver.findElement(By.xpath("//*[@id=\"business-profile\"]/div[17]/div[1]/div[2]/table/tbody/tr[9]/td[2]")).getText(); 

volcado.print(name+" "+obj_soc+" "+direcc+" "+loc+" "+tel+" "+url+" "+actividad);  
volcado.close(); 

Ancak bir daha temiz bir alternatif tek XPath ile tüm hücreleri elde etmek olurdu