2017-10-19 4 views
0

Googleを検索して最初のリンクを開くために、小さなPythonスクリプトをセレンで書いていますが、このスクリプトを実行するたびにコンソールが開き、このスクリプトはそのChromeのウィンドウに表示されます。開いているブラウザのセレンで開こうとしている

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import pyautogui 

def main(): 
    setup() 

# open Chrome and open Google 
def setup(): 
    driver = webdriver.Chrome(r'C:\\python_programs'+ 
           '(Starting_out_python)'+ 
           '\\chromedriver.exe') 
    driver.get('https://www.google.com') 
    assert 'Google' in driver.title 
    mySearch(driver) 

#Search keyword 

def mySearch(driver): 
     search = driver.find_element_by_id("lst-ib") 
     search.clear() 
     search.send_keys("Beautiful Islam") 
     search.send_keys(Keys.RETURN) 
     first_link(driver) 

#click first link 

def first_link(driver): 
     link = driver.find_elements_by_class_name("r") 
     link1 = link[0] 
     link1.click() 
main() 

私は同じブラウザでこれを開くことができますか?

+0

手動で開いたブラウザのインス​​タンスでタブを開くようにしますか? – Andersson

+0

Seleniumを使用して、同じブラウザで新しいタブを開くことはできません。 – Buaban

+0

また、私はここからやりたいので、検索で渡すことができるはずです。最初のリンクが開いたら、いくつかのコンテンツをコピーし、例えばFacebookが開いているか開いているかどうかを確認し、開いたタブを確認してから、以前のウェブサイトからコピーしました。 –

答えて

0
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 

def main(): 
    setup() 

# open Chrome and open Google 
def setup(): 
    driver = webdriver.Chrome() 
    driver.get('https://www.google.com') 
    assert 'Google' in driver.title 
    mySearch(driver) 

#Search keyword 

def mySearch(driver): 
     search = driver.find_element_by_id("lst-ib") 
     search.clear() 
     search.send_keys("test") 
     search.send_keys(Keys.RETURN) 
     first_link(driver) 

#click first link 

def first_link(driver): 
     link = driver.find_elements_by_xpath("//a[@href]") 
     # uncomment to see each href of the found links 
     # for i in link: 
     #  print(i.get_attribute("href")) 
     first_link = link[0] 
     url = first_link.get_attribute("href") 
     driver.execute_script("window.open('about:blank', 'tab2');") 
     driver.switch_to.window("tab2") 
     driver.get(url) 
     # Do something else with this new tab now 
main() 

最初のリンクは最初のリンクではない可能性があります。私の場合、最初のリンクはGoogleアカウントへのログインです。だから、hrefプロパティを確認したり、テキストをチェックして何かと一致するかどうかを確認したりするなど、それを開くまでそれ以上の検証をしたいかもしれません。

もう一つは、Google検索結果を簡単にクロールする方法があるGoogleのAPIを直接使用するか、次のような第三者の実装を使用してください:https://pypi.python.org/pypi/googleまたはhttps://pypi.python.org/pypi/google-search

+0

ありがとうございます。それは役に立ちます。 –

1

私が知っている限り、既に実行中のブラウザにSeleniumを添付する方法はありません。

さらに、なぜそれをやりたいのですか?私が考えることができるのは、手動でブラウザーを使って何かをセットアップしようとしている場合、セレンが手動でセットアップした状態から何かを行うことです。テストを可能な限り一貫して実行したい場合は、人間が特定の方法でブラウザを設定することに頼るべきではありません。スクリプトはこれを行う必要があります。

関連する問題