2016-04-01 19 views
1

私を助けてくれてありがとう。リストボックスでスクロールする必要のある要素をクリックするにはどうすればよいですか?

カテゴリを持つリストボックスを実行しようとしています。

リストボックス内の項目をクリックすると、カテゴリが表示されるリストボックスの下に来るまでは問題ありません。その場合、私にこのエラーがスローされます:

Element is not clickable at point (1121.5, 276). Other element would receive the click:

私の質問はこれです。 リストボックスを少しスクロールしてクリックする必要がある要素をクリックするにはどうすればいいですか?

私のコード

listUl1 = browser.find_element_by_id('categoryManuallySelectLevel_1') 
listCategories = [] 

# Fetch the id's 
for child in listUl1.find_elements_by_xpath(".//"): 
    listCategories.append(child.get_attribute('id')) 

# click through the items in the list 
for item in listCategories: 
    element = WebDriverWait(browser,5,poll_frequency=.2).until(EC.visibility_of((By.ID, item))) 
    element.click 

の非常に短いバージョンのサイトへのリンクをここで見つけることができます:http://www.guloggratis.dk/annonce/opret

ご質問がありましたらお気軽にお問い合わせください。私はすぐに私の電話から返信します。ありがとう。

答えて

1

あなたが同じのためjavaScriptexecutorが必要ARROW_DOWN

listBox = driver.find_element(By.id('categoryManuallySelectLevel_1')) 
counter = 1 
for item in listCategories: 
    if counter % 4 == 0: # scroll every 4 elements or so 
     listBox.send_keys(Keys.ARROW_DOWN) 
    element = WebDriverWait(browser,5,poll_frequency=.2).until(EC.visibility_of((By.ID, item))) 
    element.click 
    counter += 1 
+0

こんにちは、お返事ありがとうございます!私はあなたのソリューションを試しましたが、残念ながらまだスクロールしませんが、他のすべての要素をクリックすることはできます。 :) –

+0

あなたがスクロールしたい場合は、私の答えscrollToElementAndClickメソッドを使用することができます..ちょうどそのコードからクリックを削除し、それを介してガイコードを追加します..それは役に立ちます –

+0

私はそれをスクロールしてクリックする必要があります。また、私はfirefoxを使用しているので、ポイントをクリックする必要はないはずです。 –

0

を使用してスクロールバーをスクロールすることができます。

以下は同じ方法であなたを助けることができるJavaメソッドです。これを参照して、Pythonで使用してください。それはその後、(推奨しない)を使用し動作しない場合

private void scrollToElementAndClick(WebElement element) { 
    int yScrollPosition = element.getLocation().getY(); 
    js.executeScript("window.scroll(0, " + yScrollPosition + ");"); 
    element.click(); 
} 

: - - :それはにPythonで非常に似ています

JavascriptExecutor executor = (JavascriptExecutor) driver; 
executor.executeScript("arguments[0].click();", driver.findElement(By.<your locator>)); 

が、それはあなたを助けることを願っています:)

+0

あなたの答えをありがとう、私はアクションスクリプトで動作させることができない場合、私はJavascriptExecutorを試してみるかもしれませんが、私はPythonのためのいくつかの良いリソースをオンラインで見つけるのは難しいです。 :/ –

+0

2番目のオプションが推奨されない理由は何ですか? – DevShark

+0

JavascriptExecutorはDOMで直接作業しているため、テストケースが実際のシナリオで失敗している間にテストケースが成功する可能性があります... –

0

あなたはすることができます以下のようにページをスクロールするためのRobot Methodを使用してください:

 Thread.sleep(1000); 

     Robot robot3 = new Robot(); 
     robot3.keyPress(KeyEvent.VK_PAGE_DOWN); 
     robot3.keyRelease(KeyEvent.VK_PAGE_DOWN); 

     Thread.sleep(1000); 

    element = WebDriverWait(browser,5,poll_frequency=.2).until(EC.visibility_of((By.ID, item))) 
    element.click 
    counter += 1 
+0

こんにちは、あなたの答えに感謝します!残念ながら、私はJavaを使用していませんが、Seleniumコミュニティの大部分がそれを使用していることを強く考えています。 –

関連する問題