2016-06-20 17 views
-1

セレンを使用してウェブサイトの検索を自動化しています。 ここに私のコードです。セレンで検索すると自動的にログアウトされます

import time 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException 


def init_driver(): 
    driver = webdriver.Firefox() 
    driver.wait = WebDriverWait(driver, 5) 
    return driver 


def lookup(driver, query): 
    driver.get("www.example.com/search.php") 
    try: 
     button = driver.wait.until(EC.element_to_be_clickable(
      (By.ID, "ad"))) 
     button.click() 
     # query = "telugu" 
     # box = driver.wait.until(EC.element_to_be_clickable(
     #  (By.NAME, "keytext"))) 
     # box.send_keys(query) 
     submit_text = "SEARCH" 
     submit_button = driver.wait.until(EC.element_to_be_clickable(
      (By.XPATH, "(//*[contains(text(), '" + submit_text + "')] | //*[@value='" + submit_text + "'])"))) 
     submit_button.click() 
     print 'aaaa' 
    except TimeoutException: 
     print("Box or Button not found in google.com") 


if __name__ == "__main__": 
    driver = init_driver() 
    lookup(driver, "Selenium") 
    time.sleep(1000) 
    driver.quit() 

私はfirefoxでサイトにログインし、このスクリプトを実行します。

正常に開くURL(私がサインインしているときに開くこのURL)は、検索ボタンをクリックします。

結果が数秒間表示され、サインイン画面が表示されます。

しかし、私は別のタブでこのサイトを開くと、私はに署名していますので、私は実際にはログアウトしていないです。

を私はサイトは何とかそれがあることを検出selenium.Isでこの奇妙な振る舞いを理解していないですクリックしようとしているボットですか?

誰でもこの問題を解決する方法や迂回する方法を教えてください。

+0

手作業で同じ手順を試してください。これは製品の欠陥かもしれません。 –

+0

手作業で試してみましたが、完璧に動作しました! – user3425344

答えて

2

ご使用の製品で予期した動作が発生している可能性があります。あなたは手動でブラウザを開き、ログインしてからスクリプトを実行すると述べました。スクリプトが実行されると、Seleniumは新しいプロファイルを持つ新しいブラウザを開きます。つまり、サイトの認証におそらく使用されているCookieは存在しません。

残りの手順を実行する前に、有効な資格情報でログインするようにスクリプトを修正する必要があります。

関連する問題