2017-10-27 5 views
1

私は、この要素へのスクロールを除いて完全に機能する仕事を持っています://span[text()="Next Page"] on this pageジョブがウェブページ上の特定のテキストにスクロールしない

手動でスクロールすると動作しがちです。

element = driver.find_element_by_xpath('//span[text()="Next Page"]') 
driver.execute_script("return arguments[0].scrollIntoView();", element) 

と同様に:

clickMe = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, ('//span[text()="Next Page"]')))) 
clickMe2 = driver.find_elements_by_xpath('//span[text()="Next Page"]') 
actions = ActionChains(driver) 
actions.move_to_element(clickMe2).click() 
element = driver.find_element_by_xpath('//span[text()="Next Page"]') 
element.location_once_scrolled_into_view 
driver.execute_script("arguments[0].scrollIntoView();", clickMe2) 

それは仕事を経由して、次の行でエラーを与える:driver.execute_script("arguments[0].scrollIntoView();", clickMe2)

私はこのテキストにスクロール対処しようとしてきた何

完全なエラー:

Traceback (most recent call last): 
    File "C:/Users/Bain3/PycharmProjects/untitled4/Crownbet.py", line 2674, in <module> 
    driver.execute_script("arguments[0].scrollIntoView();", clickMe2) 
    File "C:\Users\Bain3\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 532, in execute_script 
    'args': converted_args})['value'] 
    File "C:\Users\Bain3\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 297, in execute 
    self.error_handler.check_response(response) 
    File "C:\Users\Bain3\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: unknown error: arguments[0].scrollIntoView is not a function 
    (Session info: chrome=61.0.3163.100) 
    (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 10.0.15063 x86_64) 

のフル

を更新しました。

私が上で、以前からこれを削除した。しかし、むしろ、その特定の要素に比べてページ全体をスクロールするようだ

#SCROLL_PAUSE_TIME = 0.5 


#last_height = driver.execute_script("return document.body.scrollHeight") 

#while True: 

    #driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 


    #time.sleep(SCROLL_PAUSE_TIME) 


    #new_height = driver.execute_script("return document.body.scrollHeight") 
    #if new_height == last_height: 
     #break 
    #last_height = new_height 

。これはである:

clickMe = wait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, ('//span[text()="Next Page"]')))) 
element1 = driver.find_element_by_xpath('//span[text()="Next Page"]') 
driver.execute_script("return arguments[0].scrollIntoView();", element1) 

答えて

1

は、実際に必要な要素を右にスクロールしているが、そこにナビゲーションパネル(検索バーで1、ログインし、参加します今すぐボタン)をクリックし、[次へ]ボタンを重ねます。次へボタンを表示させるために少し上にスクロールするだけです。以下のコードを試してください:

from selenium.webdriver.common.keys import Keys 

header = driver.find_element_by_tag_name('header') 
driver.execute_script('arguments[0].hidden="true";', header) 
element = driver.find_element_by_xpath('//span[text()="Next Page"]') 
driver.execute_script("arguments[0].scrollIntoView();", element) 
driver.find_element_by_tag_name('body').send_keys(Keys.UP) 
element.click() 
+0

Hmmはまだ私にとってはunclickableです:lenium.common.exceptions.WebDriverException:メッセージ:不明なエラー:要素 ...はポイント(883、31)でクリックできません。

+1

「driver.find_element_by_tag_name( 'body')。send_keys(Keys.UP + Keys.UP) 'を試してみてください。 'driver.find_element_by_tag_name( 'body')。send_keys(Keys.UP)' – Andersson

+0

time.sleepを追加すると動作するようです。 HMMはスクロールアップや何か同様のコマンドを待つ。 – Tetora

0

コードの下に参照してください: -

targetElement = driver.findElement(By.xpath("your xpath")); 
JavascriptExecutor js = ((JavascriptExecutor) driver); 
// This: 
js.executeScript("arguments[0].scrollIntoView(true);", targetElement); 
targetElement.click(); 
// Or maybe even just: 
js.executeScript("arguments[0].click();", targetElement); 
+0

JavascriptExecutor js =(JavascriptExecutor)driver; ^ SyntaxError:無効な構文 – Tetora

+0

これはPythonのコードではありません – Andersson

+0

@Anderssonこの問題が発生する原因は何ですか?最終的にスクロールするようにしましたが、必要な要素を真にスクロールして結果としてエラーコードを表示します – Tetora

関連する問題