2017-01-31 1 views
0

나는 셀레늄을 처음 접했고 실제로 작업을 쉽게 할 수있는 몇 가지 물건을 시도했다. 여기 셀레늄 - 버튼 클릭으로 수평 스크롤

는 URL입니다 - 나는 인기있는 카테고리 아래 페이지의 오른쪽 모서리에있는 화살표 버튼을 클릭하려고 https://www.starz.com/movies

하지만 난 할 수 없습니다. 또한, 모든 영화가 해당 카테고리에로드 될 때까지 여러 번 클릭해야합니다.

여기 제가 시도한 코드가 있습니다.

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class selenium { 
    public static void main(String args[]) throws InterruptedException { 

     WebDriver driver = new FirefoxDriver(); 
     driver.get("https://www.starz.com/movies"); 
     System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe"); 

     driver.findElement(By.id("popular")).click(); 
    } 
} 

위의 코드가 작동을하지만 화살표 버튼을 클릭하지 않는 대신 그것은 인기있는 카테고리 아래 중앙에 배치되는 동영상을 클릭합니다.

답변

0

당신은 <div> 대신 <button> 요소를 클릭해야합니다

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class selenium { 
    public static void main(String args[]) throws InterruptedException { 

     WebDriver driver = new FirefoxDriver(); 
     driver.get("https://www.starz.com/movies"); 
     System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe"); 

     driver.findElement(By.xpath("//div[@id='popular']//button[@class='slider-next slick-arrow']")).click(); 
    } 
} 
+0

당신이 언급 한 코드가 작동하지 않습니다. 귀하가 사용하는 xpath에 카테고리 이름이 지정되어 있지 않습니다. –

+0

확인. 'XPath' 정확한 카테고리에 묶여 – Andersson

0

By.id("popular")는 당신에게 전체 행을 줄 것이다. 모든 화살표는 같은 클래스, sz-icon-arrow-next을 가지고, 그래서 당신은 화살표를 찾을 인기있는 행과 화살표 로케이터를 사용할 필요가

driver.findElement(By.cssSelector("#popular .sz-icon-arrow-next")).click(); 

EDIT 당신이 마지막에있는 화살표를 클릭합니다

그것을 목록에 위치시키고 그것이 여전히 존재하는지 확인하십시오.

int size = 1; 
while (size > 0) { 
    List<WebElement> arrow = driver.findElements(By.cssSelector("#popular .sz-icon-arrow-next")); 
    size = arrow.size(); 
    if (size > 0) { 
     arrow.get(0).click(); 
    } 
} 
+0

고마워요. 이것은 나를 위해 일하는 것 같지만 한 번만 클릭합니다. 목록에있는 모든 영화가 끝날 때까지 클릭하도록하는 방법이 있습니까? 테스트 목적으로 for 문을 사용했지만 화살표 단추가 사라진 후에 [org.openqa.selenium.ElementNotVisibleException : Element not visible] 예외가 발생했습니다. for (int i = 0; i <10; i ++) { \t \t \t driver.findElement (By.cssSelector ("popular .sz-icon-arrow-next")). \t \t \t Thread.sleep (5000); \t \t} –

+0

@love_to_learn 내 대답을 편집했습니다. – Guy

+0

매력처럼 작동합니다 (언젠가는 로딩 문제로 인해 실패합니다. 그런 경우에는 thread.sleep을 사용하고 있습니다). –