簡體   English   中英

JavaScript 適用於 chrome 控制台,但不適用於 firefox 或 selenium 代碼

[英]JavaScript works on chrome console but doesn't work in firefox or selenium code

我正在嘗試使用 selenium 自動登錄到以下頁面: https://services.cal-online.co.il/Card-Holders/SCREENS/AccountManagement/Login.aspx?ReturnUrl=%2fcard-holders%2f %2fHomePage.aspx

嘗試同時使用 id、css 選擇器和 xpath 來查找用戶名和密碼元素都不起作用。

self._web_driver.find_element_by_xpath('//*[@id="txt-login-username"]')
self._web_driver.find_element_by_id("txt-login-password")
self._web_driver.find_element_by_css_selector('#txt-login-username')

對於這三個我得到 NoSuchElement 異常

我嘗試了以下 JS 腳本: document.getElementById('txt-login-username')當我在 selenium 或 firefox 中運行此腳本時,它返回 ZBBB93EF26E3C101FF11ICD21CAB08A9 中的結果,但是當我在控制台中運行時可以使用它。 有什么方法可以使它從 python 代碼中運行,或者在 chrome 控制台本身而不是從 python execute_script 中運行它?

要使用Selenium自動登錄頁面,因為所需的元素位於<iframe>中,因此您必須:

  • 誘導WebDriverWait使所需的幀可用並切換到它
  • 誘導WebDriverWait使所需元素成為可點擊的。
  • 您可以使用以下解決方案:

    • 代碼塊:

       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 options = webdriver.ChromeOptions() options.add_argument("start-maximized") driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get("https://services.cal-online.co.il/Card-Holders/SCREENS/AccountManagement/Login.aspx?ReturnUrl=%2fcard-holders%2fScreens%2fAccountManagement%2fHomePage.aspx") WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='calconnectIframe']"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='txt-login-username']"))).send_keys("ariel6653") driver.find_element_by_xpath("//input[@id='txt-login-password']").send_keys("ariel6653")

瀏覽器快照:

在線呼叫

在這里您可以找到有關如何處理 iframe 下的#document的相關討論

找到了解決問題的方法。 問題確實是 object 在 iframe 內。 我嘗試使用從 iFrame 中獲取元素中建議的解決方案

但出現安全錯誤。 解決方案是通過以下方式切換框架: driver.switch_to.frame("iframe")現在您可以使用正常的查找元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM