我尝试在下面的链接上模拟购买项目操作。 (首先需要登录)
点击下面的按钮后。
img_link:
该链接将跳转到new link。
但是如果我现在打印出page_source,我将获得空值。
为什么会这样?
当然,任何元素位置都会导致:
selenium.common.exceptions.NoSuchElementException
我在谷歌上搜索,我知道这不是由于页面卸载造成的。
为什么会发生这种情况以及如何解决?
这是我使用的代码。 帐户名称和代码位于cfg文件中。
int H1 = Convert.ToInt16(???);
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)
答案 0 :(得分:1)
您必须切换到新窗口才能使其正常工作:
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)
通过这种方式,您可以告诉Selenium必须使用哪个窗口。