2017-10-01 8 views
-1

私は下のリンクで購入アイテム操作をシミュレートしようとします。なぜpython seleniumが空のpage_sourceを取得するのですか?

taobao_item_link

そして、あなたは下のボタンをクリックした後、(最初にログインが必要です)。

img_link: img

リンクはnew linkにジャンプします。

しかし、私が今page_sourceを印刷すると、空の値が得られます。

これはどうしてですか?

そしてもちろん、任意の要素の場所がにつながる:私はGoogleで検索し、私はそれがページのアンロードに起因していないことを知っている

selenium.common.exceptions.NoSuchElementException

を。

なぜこれが起こり、それを修正するのですか?

ここに私が使用するコードがあります。 アカウント名とコードはcfgファイルにあります。

# -*- coding: utf-8 -*- 
from selenium import webdriver 
from selenium.webdriver.common.action_chains import ActionChains 
import os 
import time 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.keys import Keys #需要引入keys包 
chromedriver = "chromedriver.exe" 
os.environ["webdriver.chrome.driver"] = chromedriver 

d = {} 
with open("cfg.ini", encoding = 'utf-8') as f: 
    for line in f: 
     (key, val) = line.split() 
     d[key] = val 

options = webdriver.ChromeOptions() 
options.add_argument('--ignore-certificate-errors') 
options.add_argument('--ignore-ssl-errors') 
driver = webdriver.Chrome(chrome_options=options) 

driver.maximize_window() 
driver.get('https://login.taobao.com/member/login.jhtml') 
time.sleep(2) 
driver.find_element_by_id('J_Quick2Static').click() 
driver.find_element_by_id("TPL_username_1").clear() 
driver.find_element_by_id("TPL_username_1").send_keys(d['accountname']) 

driver.find_element_by_id("TPL_username_1").send_keys(Keys.TAB) 
time.sleep(1) 
driver.find_element_by_name("TPL_password").send_keys(d['code']) 

driver.find_element_by_css_selector('#J_SubmitStatic').click() 

print('-' * 20) 
print(d['phone']) 
driver.get(d['itemurl']) 

element=WebDriverWait(driver,60).until(lambda driver : 
driver.find_element_by_css_selector('#J_LinkBuy')) 

# with open('res1.html', 'a') as the_file: 
    # the_file.write(driver.page_source) 
element.click() 

element=WebDriverWait(driver,60).until(lambda driver : 
driver.find_element_by_css_selector('#J_phone')) 

driver.find_element_by_id('J_phone').click() 

print('here is the page') 
print(driver.page_source) 

cfgファイルは、このようなものです:

accountname xxx 
code xxxx 
phone xxxx 
itemurl xxxx 
+0

使用しているコードを投稿できますか?あなたの投稿の画像も見えません。 –

+0

@KoenMeijer私はすでに思い出させるためにコードを追加して、あなたはtaobaoのアカウントとpwdが必要です – Lee

答えて

0

あなたはそれを動作させるために、新しいウィンドウに切り替えてください:

driver.find_element_by_id('J_phone').click() 

driver.switch_to.window(driver.window_handles[1]) 

print('here is the page') 
print(driver.page_source) 

あなたはどのウィンドウでセレンを伝えるこのようにそれは動作する必要があります。

+0

私はこのコードを試していますが、例外はインデックスが範囲外で、window_handlesの長さを表示していると言います。理由を知りません。 – Lee

関連する問題