2017-07-20 35 views
0

我想單擊IMDB評級最高的電影,這是在「電影,電視&放映時間」,但我不明白如何寫正確併爲它準確的xpath。我無法點擊評分最高的電影部分。Selenium:不懂如何爲IMDB頂級電影寫正確的xpath

下面是代碼:

driver.get("http://www.imdb.com"); 

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
Actions action = new Actions(driver); 
action.moveToElement(driver.findElement(By.id("navTitleMenu"))).build().perform(); 

driver.findElement(By.xpath("//li[@id='navTitleMenu']/div/div[2]/ul[1]/li[6]/a")).click(); 

幫助我。謝謝。

+0

所以你在哪裏點擊使用此XPath位置改變壁虎驅動程序路徑?或者你有任何錯誤或異常? –

回答

1

這是世界衛生大會你應該繼續執行自己的行爲,作爲重點將從下拉菜單丟失(所以它會被關閉)

1

你自己創建的我推薦使用Chrome打造的XPath也許問題是,你的XPath是不正確試試這個中的XPath:

//*[@id="navMenu1"]/div[2]/ul[1]/li[6]/a 

,或者如果沒有,也許你應該等待一點點地獲取頁面負載做嘗試

try { 
     // thread to sleep for 5 seconds 
     Thread.sleep(5000); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 

然後

driver 
.findElement(By.xpath("//*@id="navMenu1"]/div[2]/ul[1]/li[6]/a")).click(); 
+0

所以基本上問題是沒有給它足夠的時間加載。我認爲這不會是一個問題,因爲鼠標懸停工作正常。但我想是這樣。 謝謝。 –

+0

請增加聲望,以便像你這樣的問題的其他人可以解決問題 –

1

首先 -

driver.get("http://www.imdb.com"); 
    new WebDriverWait(driver, 5000) 
      .until(ExpectedConditions.visibilityOfElementLocated(By.id("navTitleMenu"))); 
    new Actions(driver) 
      .clickAndHold(driver.findElement(By.id("navTitleMenu"))) 
      .moveToElement(driver.findElement(By.linkText("Top Rated Movies"))) 
      .click() 
      .build().perform(); 

的問題是,當你移動到navTitleMenu:噸我的情況下工作全部, 忘掉隱含的等待,這是不需要的,因爲IMDB是一個穩定的站點

執行mousehover後添加明確的等待。它一定會爲你工作。

請嘗試下面提到的確切代碼,使用我的瀏覽器正常工作。

請根據您的目錄

 package com.imdb.top; 

    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.firefox.FirefoxDriver; 
    import org.openqa.selenium.interactions.Actions; 
    import org.openqa.selenium.support.ui.ExpectedConditions; 
    import org.openqa.selenium.support.ui.WebDriverWait; 



    public class Imdb 
    { 
    public static void main(String... args) 
    { 
    System.setProperty("webdriver.gecko.driver", 
    "C:\\Users\\thinksysuser\\Downloads\ 
    \geckodriver-v0.18.0-win64\\geckodriver.exe"); 

    WebDriver driver = new FirefoxDriver(); 

    driver.get("http://www.imdb.com"); 



    Actions action = new Actions(driver); 




    action.moveToElement(driver.findElement(By.id("navTitleMenu"))) 
       .build().perform(); 

    WebDriverWait wait = new WebDriverWait(driver, 60, 50); 

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//* 
    [@id='navMenu1']/div[2]/ul[1]/li[6]/a"))).click(); 

    driver.findElement(By.xpath(".//* 
    [@id='navMenu1']/div[2]/ul[1]/li[6]/a")).click(); 
    } 
} 
相關問題