2017-01-04 28 views
1

セレンを使って、指定されたページの指定された領域内をランダムにクリックすることがあったかどうかを知りたかったのです。Selenium(python)を使ってページをランダムにクリックする方法と、ページを拡大する方法は?

さらに、ページの特定の領域をズームする方法を知っている人はいますか?例えば、ページはxでyですが、元のページの特定の領域(0,1/4x)を(0,1/4y)または(1/4/4x、2/4x)(1/4y、2/4y)であり、ページの特定の領域にズームインすると内容が変化する点である。

私の頭の中のコードは次のようになります。

For i in x: 
    Page = driver.zoom((x1, x2), (y1, y2)) # where x1 to x2 is the horizontal of the page and the y1 to y2 are the vertical dimensions of where I want to look 
    x_coord = random.uniform(x1, x2) #randomly pulling x coord 
    y_coord = random.uniform(y1, y2) #randomly pulling y coord 
    webdriver.click(x_coord, y_coord) 
    webdriver.read_page() 

は、誰もがこれを実現することができる方法を知っていますか?

+0

地域のすべてのURLをリストに入れます。 'random'モジュールを使用して、リスト内のURLの1つを選択します。そのURLをクリックするには 'Selenium'を使います。 – boardrider

答えて

0

動的であるアイテムを見つけるときは、CSSセレクタを使用することが最も効果的です。 Iは、YTのビデオを使用した例として

driver = webdriver.Firefox() 
 
driver.get('https://www.youtube.com/watch?v=hhR3DwzV2eA') 
 

 

 
# store the current url in a variable 
 
current_page = driver.current_url 
 

 
# create an infinite loop 
 
while True: 
 
    try: 
 
     # find element using css selector 
 
     links = driver.find_elements_by_css_selector('.content-link.spf-link.yt-uix-sessionlink.spf-link') 
 

 
     # create a list and chose a random link 
 
     l = links[randint(0, len(links) - 1)] 
 

 
     # click link 
 
     l.click() 
 

 
     # check link 
 
     new_page = driver.current_url 
 

 
     # if link is the same, keep looping 
 
     if new_page == current_page: 
 
      continue 
 
     else: 
 
      # break loop if you are in a new url 
 
      break 
 
    except: 
 
     continue

。右側にある推奨動画をクリックしたいとします。そのリンクには、独自のCSSセレクターがあります。

要素のリストを作成したときに、何らかの理由でpythonが格納された要素を表現するのがうまくいかない場合、無限ループを作成する理由はb/cです。あなたがタイムアウトエラーなどを得て、それがランダムリンクをクリックするように強制したい場合は、必ず 'except' b/cをキャッチしてください。

関連する問題