2016-05-31 3 views
2

セレンはボタンをクリックしようとしています。セレンはそのボタンをクリックするためにスクロールする必要があります。しかし、セレンがスクロールダウンすると、ボタンはスティッキーバーの後ろになり、セレンはボタンの代わりにスティッキーバーをクリックします。セレンが誤ってクリックしています

Firefox webdriverを使用しています。

私は次のことを試してみました:

DesiredCapabilities.FIREFOX["elementScrollBehavior"] = 1 
self.driver = webdriver.Firefox() 

私は1elementScrollBehaviorセットを持っている場合は、それがすべてでスクロールしません。

ボタンがスティッキーバーの後ろに来ないように、セレンを適切にスクロールさせるにはどうすればよいですか?

-edit-
DesiredCapabilities.FIREFOX["elementScrollBehavior"] = 1

今の仕事をして、まだボタンをクリックすることができません。それでもスティッキーバーは途中ではありません。

答えて

0

:遠くにスクリプトをスクロールした場合

driver = webdriver.Firefox() 
driver.get("http://somewebpage.example") 
time.sleep(5) 

while True: 
    try: 
     # Edit this to how you're currently scrolling 
     driver.execute_script("window.scrollBy(0, 150);") 
     button = driver.find_element(By.XPATH, YOUR_BUTTON_XPATH) 
     button.click() 
     break 
    except WebDriverException: 
     driver.execute_script("window.scrollBy(0, -100);") 
     time.sleep(2) 

をし、例外をスローし、それがこのエラーをキャッチし、ページの最大100個のピクセルのバックスクロールします。

これは、あなたのボタンをクリックします保証する必要があり、それはそれを見つけるまで、それは常にページの下は50pxに移動しますが、あなたはスクロールのあなたの通常の方法を実装することができ、その後、WebDriverExceptionをキャッチして、画素のカップルをバックスクロールします。

+0

すぐに:私はこのようにしています。http://pastebin.com/EVNiSF6Pセレンのスクリプトは速すぎます。 'time.sleep()'の代わりに、暗黙的な待機を使用していますが、それはうまくいかないようです。 – Drago

+0

はい、ページに要素が表示されるまで待機することができます。例えば、ページを読み込んだ後にユーザー名フィールドが画面に表示されるのを待つために、ユーザー名要素が表示されない限り少なくとも10秒待ってから – AK47

+0

ここで問題となるのは、スクロールしている間にすぐにクリックされるということです。「要素はクリックできません。ポイント(327.5,15)で。他の要素はクリックを受け取ります。スクロールが速くないため、クリックすることはできません。それは、スクロールしながらボタンをクリックしようとします。 – Drago

-1

要素にjavascriptスクロールを使用して、オフセットを使ってもう少しスクロールしてみてください。たとえば、 などです。あなたはこのような何かを実装でき

IJavaScriptExecutor jse = (IJavaScriptExecutor)driver; 
jse.ExecuteScript("arguments[0].scrollIntoView(true)", element) 
jse.ExecuteScript("window.scrollBy(0,50)"); 
+1

誰かがこれをpythonに変換する可能性があります –

関連する問題