我正在尝试从特定的网络元素中获取一些信息。问题是,当我尝试在没有for循环的情况下获取信息时,程序就像魅力一样。但同样当我把它放在for循环中并尝试它不会检测循环中的web元素。这是我一直在尝试的代码:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
from lxml import html
import requests
import xlwt
browser = webdriver.Firefox() # Get local session of firefox
# 0 wait until the pages are loaded
browser.implicitly_wait(3) # 3 secs should be enough. if not, increase it
browser.get("http://ae.bizdirlib.com/taxonomy/term/1493") # Load page
links = browser.find_elements_by_css_selector("h2 > a")
def test():#test function
elems = browser.find_elements_by_css_selector("div.content.clearfix > div > fieldset> div > ul > li > span")
print elems
for elem in elems:
print elem.text
elem1 = browser.find_elements_by_css_selector("div.content.clearfix>div>fieldset>div>ul>li>a")
for elems21 in elem1:
print elems21.text
return 0
for link in links:
link.send_keys(Keys.CONTROL + Keys.RETURN)
link.send_keys(Keys.CONTROL + Keys.PAGE_UP)
time.sleep(5)
test() # Want to call test function
link.send_keys(Keys.CONTROL + 'w')
当我打印对象时,我得到的输出是一个空数组作为输出[]
。有人可以帮助我加强它。新手到硒。
在上一个问题中,我曾询问有关打印的问题。但问题在于,自我是元素本身不能检测到的。这种方式问题完全不同。
答案 0 :(得分:2)
我无法打开页面,但据我所知,您希望按顺序打开链接并执行某些操作。使用link.send_keys(Keys.CONTROL + 'w')
,您将关闭新打开的标签页,以便在新标签页中打开链接。在这种情况下必须切换到新窗口,以便您可以在新窗口中访问该元素。您可以按driver.window_handles
查询窗口并按driver.switch_to_window(driver.window_handles[-1])
切换到上一个窗口,关闭窗口后,您必须切换回driver.switch_to_window(driver.window_handles[0])
for link in links:
link.send_keys(Keys.CONTROL + Keys.RETURN)
# switch to new window
driver.switch_to_window(driver.window_handles[-1])
link.send_keys(Keys.CONTROL + Keys.PAGE_UP) # dont know why
time.sleep(5)
test() # Want to call test function
link.send_keys(Keys.CONTROL + 'w')
#switch back to the first window
driver.switch_to_window(driver.window_handles[0])