最近私は個人的なプロジェクトでpythonとセレニウムのwebdriverを使って作業していますが、 :要素がページ文書に添付されていません "というエラーが発生しました。スクリプトが新しいページを読み込んだ後、" find_element "を使用して要素にアクセスしようとしました。この問題について多数の記事を読んでいますが、私の混乱した脳に光を当てました。古い要素の参照:新しいページを読み込んだ後に要素がページ文書に添付されていない[python] [selenium]
コードは次のとおりです。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup
#Ask User for keyword
keyword = input("Insert Product Name:")
#Open chrome browser
driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe")
#Open e-bay.com
driver.get("http://www.e-bay.com")
#Find the search text field element
search_element = driver.find_element_by_id("gh-ac")
#Clear the search text field of any data
search_element.clear()
#Type the user given keyword to the text field
search_element.send_keys(keyword)
#Hit enter key
search_element.send_keys(Keys.RETURN)
#Set number of listings on the same page (25,50,100,200)
#Find the dropdown menu element for listings per page(Wait till it shows up)
dropdown_menu_lpp = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#cbBtmElem > div > ul.sel > li > a.btn.btn-s.small.btn-ter.dropdown-toggle")))
#Mouse over the dropdown menu
actions = ActionChains(driver)
actions.move_to_element(dropdown_menu_lpp)
actions.perform()
#Find the desired setting and click it.I choose 200 listings per page here because is the most convennient for this application.
listings_per_page = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#cbBtmElem > div > ul.lyr.txtRt.dropdown-menu.dropdown-menu-sm.menu3 > li:nth-child(3)")))
actions.move_to_element(listings_per_page)
actions.click()
actions.perform()
#Find Listings link(Wait til the links show up first)
listings_links = []
listing_link_elements = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME,"vip")))
#Put the links in a list data-structure
for link in listing_link_elements:
listings_links.append(link.get_attribute('href'))
print(listings_links)
driver.quit()
スクリプトは、e-bay.comを開き、キーワードを検索、リストの数が200に示した変更、(200)リストのリンクを得ることになっていますそれらをリストデータ構造上に置く。
ありがとうございます。
PS:ImはPython 3.5を使用しています。
まずはお返事ありがとうございます。私は上記の解決策を認識していますが、ユーザーシナリオを実行しようとしていました。なぜこのエラーを具体的に求めているのですか。 –