我的問題如下:我試圖用python和selenium的webdriver登錄Wikifolio.com。 到目前為止,登錄是有效的(對selenium的實際作用有非常基本的了解)。 此外,我還成功地點擊了將出現的免責宣告按鈕。
下面是一個 "交易 "按鈕的串列,每一個按鈕都連接到不同的資產。 當我點擊 "檢查 "貿易按鈕時,我從網站上得到了以下的xpath:
//*[@id="root-wf-trading"/span>]/div/div/table/tbody/tr[3]/td/table/tbody/tr[6]/td/div/a[1]
或完整的xpath
/html/body/div[3]/main/div[3]/div[2]/div[1]/div//div/div[1]/[2]/[2] selector-tag">div/div/[1]/div/ selector-tag">div/table/tbody/tr[3]/td/table/tbody/tr[6]/td/div/a<1]
相應的HTML是
< a href="#add_virtual_order"/span> rel="US88554D2053"/span> data-amount="999" data-issuer="1900""1900" data-description="3 D SYS CORP. DL-, 001" data-security-type="620" class="add_virtual_order js-trade-button inline c-btn btn-trade-xsm u-mr-0 u-fs-s" data-main- 可編輯="true" data-toggle="tooltip" data-placement="top" data-original-title="< div class='wikifolio-tooltip-text'>Neuen Trade platzieren</div>" aria-describedby="tooltip436117"/span>> 貿易</a>
到目前為止,我使用的Python代碼如下:
我使用的Python代碼如下。
from selenium import webdriver
用戶名 = "*********"/span>
密碼 = "*********"/span>
url = "https://www.wikifolio.com/dynamic/de/de/login/login?ReturnUrl=/de/de/home&_=1632037782306"/span>
driver = webdriver.Chrome(executable_path=r'UsersBenjaminDownloadschromedriver_win32chromedriver.exe' )
driver.get(url)
driver.find_element_by_name("用戶名").send_keys(用戶名)
driver.find_element_by_name("Password") .send_keys(password)
driver.find_element_by_css_selector("button") .click()
driver.get("https://www.wikifolio.com/de/de/meine-wikifolios/trade/wf00wiking")
driver.find_element_by_css_selector(".c-disclaimer .js-disclaimer__abort, .c-disclaimer .js-disclaimer__change").click()
driver.find_element_by_xpath('/html/body/div[3]/main/div[3]/div[2]/div[1]/div/div[1]/div[2]/div/div/div[1]/table/tbody/tr[3]/td/table/tbody/tr[6]/td/div/a[1]').click()
當我嘗試運行這段代碼時,出現了以下情況:
NoSuchElementException Traceback (most recent call last)
<ipython-input-472808785f4fd0> in <module>
18
19
---> 20 driver.find_element_by_css_selector(".c-disclaimer .js-disclaimer__abort, .c-disclaimer .js-disclaimer__change").click()
21
22
~anaconda3libsite-packagesseleniumwebdriver
emotewebdriver.py in find_element_by_css_selector(self, css_selector)。
596元素 = driver.find_element_by_css_selector('#foo'/span>)
597 ""。
--> 598 return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
599
600 def find_elements_by_css_selector(self, css_selector):
~anaconda3libsite-packageesseleniumwebdriver
emotewebdriver.py in find_element(self, by, value)
976 return self.execute(Command.FIND_ELEMENT, {
977 'using': by,
--> 978 'value': value})['value'] 。
979
980 def find_elements(self, by=By.ID, value=None):
~anaconda3libsite-packagesseleniumwebdriver
emotewebdriver.py in execute(self, driver_command, params)
319 response = self.command_executor.execute(driver_command, params)
320 如果回應。
--> 321 self.error_handler.check_response( response)
322 response['value'] = self._unwrap_value(
323 response.get('value', None))
~anaconda3libsite-packagesseleniumwebdriver
emoteerrorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):
NoSuchElementException。訊息:沒有這樣的元素。無法定位元素。{"method": "css selector", "selector":".c-disclaimer . js-disclaimer__abort, .c-disclaimer .js-disclaimer__change" }
(會話資訊:chrome=93.0.4577.82)
我可以做什么?我怎樣才能解決并打開 "交易 "按鈕呢?
非常感謝,祝你好運,本杰明
。uj5u.com熱心網友回復:
你的定位器肯定是壞的,這就是為什么你會得到NoSuchElementException。
為了給你正確的定位器,我需要用有效的憑證進入。
基于你提供的元素HTML,而不是
driver. find_element_by_xpath('/html/body/div[3]/main/div[3]/div[2]/div[1]/div/div[1]/div[2]/div/div/div[1]/table/tbody/tr[3]/td/table/tbody/tr[6]/td/div/a[1]').click()
試一下:
driver.find_element_by_xpath("/a[@data-toggle='tooltip' and(contains(@href,'add_virtual_order')) and(contains(@class,'add_virtual_order')]"/span>).click()
另外,你必須在訪問元素之前添加等待/延遲,像這樣:
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
用戶名 = "*********"/span>
密碼 = "*********"/span>
url = "https://www.wikifolio.com/dynamic/de/de/login/login?ReturnUrl=/de/de/home&_=1632037782306"/span>
driver = webdriver.Chrome(executable_path=r'UsersBenjaminDownloadschromedriver_win32chromedriver.exe')
wait = WebDriverWait(driver, 20)
driver.get(url)
driver.find_element_by_name("用戶名").send_keys(用戶名)
driver.find_element_by_name("Password") .send_keys(password)
driver.find_element_by_css_selector("button") .click()
driver.get("https://www.wikifolio.com/de/de/meine-wikifolios/trade/wf00wiking")
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".c-button--ghost") ).click()
wait.until(EC.visibility_of_element_located((By.XPATH, "/a[@data-toggle='tooltip' and(contains(@href,'add_virtual_order')) and(contains(@class,'add_virtual_order'))]"/span>).點擊()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/327081.html
標籤:
