2017-01-19 10 views
14

私はまだ学んでいて、私の質問の1つである:hereに答えて、問題の要素が見えていないので、それが原因かもしれないと言われました。webdriverを使用して要素にスクロールしますか?

私は文書を通じて見て、SO、ここでは最も関連性の高い答えた:

WebElement element = driver.findElement(By.id("my-id")); 
Actions actions = new Actions(driver); 
actions.moveToElement(element); 
## actions.click(); 
actions.perform(); 
here

あなたが要素に移動するには、「org.openqa.selenium.interactions.Actions」クラスを使用することができます

上記を使って要素にスクロールしようとすると: WebElementが定義されていません。

これは、関連するモジュールをインポートしていないためです。誰かが私が輸入するはずのものを指摘できますか?

編集: これはalecxeによって指摘されたとおり、これはJavaコードでした。

しかし、しばらくの間それを理解しようとした直後に。私はWebElementのインポートメソッドを見つけました。

from selenium.webdriver.remote.webelement import WebElement 

私のような人に助けてくれるかもしれません。

それをどのようにIMO、また良い教訓です:

はに行ってきました:Documentation

class selenium.webdriver.remote.webelement.WebElement(parent, id_, w3c=False) 

は、上記のコマンド形式に分割する必要があります。

答えて

28

PythonでJavaコードを実行しようとしています。パイソン/セレンでは、org.openqa.selenium.interactions.ActionsActionChains classに反映されています

from selenium.webdriver.common.action_chains import ActionChains 

element = driver.find_element_by_id("my-id") 

actions = ActionChains(driver) 
actions.move_to_element(element).perform() 

それとも、あなたもscrollIntoView()を経て、 "ビューにスクロール" することができます

driver.execute_script("arguments[0].scrollIntoView();", element) 

あなたは違いに興味がある場合:

+0

ああ...私は3時間、SOとドキュメントで見つけたすべての方法を試していました。私は最初の解決策を試みましたが、何とかそれを台無しにしているに違いありません。私はScrollIntoViewとmoveToElementを読みます。ただの簡単な質問です。同じ手順を100回実行する必要があります。私は 'for'ループを使うことを考えています。これは良いアプローチですか? – Sid

+0

@Sidは言い難い。場合によっては、ループ内でアクションを連鎖させてからループの後に実行することもできますが、すべてがユースケースに依存します。ヘルプが必要な場合は、別のSOトピックを作成することが理にかなっているかどうかを確認してください。ありがとう。 – alecxe

12

それは質問に直接答えではありません(そのことについてActions)が、それはまた、あなたが必要な要素を簡単にスクロールすることができます:

element = driver.find_element_by_id('some_id') 
element.location_once_scrolled_into_view 

これは実際にあなたの座標を返すつもり(xを、y)要素の上ページだけでなく、目的の要素に右スクロール

+0

ありがとう@Anderssonこれは、これが他の問題の問題かもしれないことを指摘して以来、私はこれを行う方法を見つけようとしていました。 :) – Sid

+1

最初に '()'を後ろに付け加え、エラー '' dict 'オブジェクトが呼び出せません'、要素タイプが 'WebElement'であることを確認しました。それから私は '()'を取り除き、働いた。これは方法ではありませんか?なぜ、()が必要なのか? –

+0

@LeiYang、location_once_scrolled_into_viewはPython [property](https://stackoverflow.com/questions/17330160/how-does-the-property-decorator-work)です。 Propertiesは引数をとりません(オブジェクトインスタンス-selfを除く)。かっこなしで呼び出す必要があります – Andersson

関連する問題