HTML(超文本标记语言)是用于构造网页和格式化内容的标准标记语言。 HTML在语义上描述了网站的结构以及用于表示的提示,使其成为标记语言,而不是编程语言。 HTML主要与CSS和JavaScript结合使用,为页面添加样式和行为。 HTML规范的最新修订版是HTML5.2。
由于表单元的大小及其包含DIV的大小都相对于窗口的宽度而设置,因此这些单元格完全适合DIV。这可以完美地适合宽度,但不能为高度提供。最后一行的细胞似乎以分数量伸出了DIV的底部。 to以DIV的尺寸和一个表单元格的尺寸表明它们应该正确对齐,因为细胞的高度正好是DIV高度的1/10,并且有10行的细胞。但是,即使数学可以按预期的方式发挥作用,视觉效果也不匹配。
为什么DIV的高度不等于表单元格高度的总和,即使登录到控制台时相等? 我正在尝试动态构造一个表,其大小由浏览器窗口的当前宽度确定。 由于表单元的大小及其包含DIV的大小都被设置为相关...
是什么导致计算高度和显示高度之间的差异?
Using Google App Script to update spreadsheet from gmail, javascript not running
<body onload="load()"> <!-- The Modal --> <div id="modalDiv" class="modal"> <!-- Modal content --> <div class="modal-content"> <div id="question"> <p>Are you sure the review of <span style="color:rgb(0,120,211);"><?= getDocument_()['name'] ?></span> has finished and its content is up to date?</p> <button id="yes">Yes</button> <button id="no">No</button> </div> </div> </div> <script> console.log("JavaScript is running!"); const modal = document.getElementById("modalDiv"); console.log("Modal Element:", modal); const yesBtn = document.getElementById("yes"); console.log("Yes Button:", yesBtn); const noBtn = document.getElementById("no"); console.log("No Button:", noBtn); const question = document.getElementById("question"); const content = document.getElementsByClassName("modal-content")[0]; const load = function () { console.log("Modal loaded."); modal.style.display = "block"; } yesBtn.addEventListener('click', () => { alert("Yes button clicked!"); console.log("Yes button clicked."); question.style.display = "none"; const yesResponse = document.createElement('p'); yesResponse.innerHTML = 'Thanks for completing the review/update of the document. We have updated the status of your document <span style="color:rgb(0,120,211);"><?= getDocument_()['name'] ?></span> to Ready and reset your next review date. You will no longer receive notifications for this review period. Have a great day!'; content.appendChild(yesResponse); try { const documentData = <?= JSON.stringify(getDocument_()) ?>; console.log("Sending document data to setDocumentAsReady:", documentData); if (!documentData.name || !documentData.url) { console.error("Error: Document data is missing!", documentData); return; } google.script.run .withSuccessHandler(() => console.log("setDocumentAsReady() executed successfully.")) .withFailureHandler(error => console.error("Error calling setDocumentAsReady:", error)) .setDocumentAsReady(documentData); } catch (err) { console.error("JavaScript Error:", err); } // google.script.run.setDocumentAsReady(<?= JSON.stringify(getDocument_()) ?>); }); noBtn.addEventListener('click', () => { console.log("No button clicked."); question.style.display = "none"; const noResponse = document.createElement('p'); noResponse.innerHTML = 'Ok. Please come back again when the review of <span style="color:rgb(0,120,211);"><?= getDocument_()['name'] ?></span> finishes and its content is up to date'; content.appendChild(noResponse); }); </script> </body>`
如何通过控制器的模型方法结果到codeigniter中的查看 我想创建简单的搜索功能。我跟随一些例子。但是我无法获得结果。 查看页面
Controller function search_keyword() { $keyword = $this->input->post('keyword'); $data['results'] = $this->mymodel->search($keyword); $this->twig->display('result_view.php', $this->data); //$this->load->view('result_view.php', $data); } 模型 function search($keyword) { $this->db->like('item_name', $keyword); $query = $this->db->get('bracelets'); return $query->result(); } 改变 $this->twig->display('result_view.php',$this->data); to $this->load->view('result_view.php',$data); 使用此功能 function search_keyword() { $keyword=$this->input->post('keyword'); $data['results']=$this->mymodel->search($keyword); $this->twig->display('result_view.php',$data); }
我正在使用Navbar工作,并试图使材料符号图标和文本垂直使材料符号和文本对齐。 这里是我的html:<ul class="navbar-items-list"> <li class="navbar-item"><a href="#"><span class="material-symbols-outlined size-32">Home</span> Home</a></li> <li class="navbar-item"><a href="#">About</a></li> <li class="navbar-item"><a href="#">Services</a></li> <li class="navbar-item"><a href="#">Contact</a></li> <li class="navbar-item"><a href="#">Blog</a></li> </ul> 这是我的CSS文件中的CSS类: .navbar-items-list { display: flex; flex-direction: column; justify-content: start; align-items: center; list-style: none; padding: 0; margin: 5rem 0 0 0; } .navbar-item { display: flex; align-items: center; width: 100%; padding: 1rem 2rem; font-size: 0.8rem; color: $white; text-decoration: none; border-top: 1px solid rgba($color: $white, $alpha: 0.1); transition: all 0.3s ease; } .navbar-item a { color: $white; font-size: 0.8rem; font-weight: 700; text-decoration: none; width: 100%; height: 100%; display: block; } 这是我创建的用于基于Google文档设置材料符号大小的类: span.size-32 { font-size: 32px; font-variation-settings: 'OPSZ' 32; } 我现在拥有的代码会产生以下内容,但并未垂直对齐: I在align-items: center;类中使用navbar-item,应该垂直对齐所有子项目,但似乎不足以垂直对齐。 我在这里错过了什么?P.S。我使用链接引用材料符号 - 请参阅下文:<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght@100" rel="stylesheet" /> 仅适用于.navbar-items-list a { display: flex; align-items: center; }:: .navbar-items-list { display: flex; flex-direction: column; list-style: none; padding: 0; gap: 1rem; li { display: flex; align-items: center; } a { font-size: 0.8rem; font-weight: 700; text-decoration: none; display: flex; align-items: center; gap: .2rem; } } <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght@100" rel="stylesheet" /> <ul class="navbar-items-list"> <li><a href="#"><span class="material-symbols-outlined size-32">Home</span> Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Services</a></li> <li><a href="#">Contact</a></li> <li><a href="#">Blog</a></li> </ul>
import time import docker from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys def setupDockerFirefoxSeleniumContainer(): client = docker.from_env() client.images.pull("selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250303") firefox = client.containers.run("selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250303", detach = True, name = "firefox", ports = {4444: 4444, 7900: 7900}, shm_size = "2G", environment = ["SE_START_XVFB=false", "SE_SCREEN_WIDTH=1200", "SE_SCREEN_HEIGHT=900"]) return firefox def setupSeleniumFirefoxDriver(): try: options=webdriver.FirefoxOptions() options.add_argument("--headless") options.add_argument("--disable-gpu") options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:36.0) Gecko/20100101 Firefox/135.0") driver = webdriver.Remote( command_executor="http://127.0.0.1:4444/wd/hub", options=options ) driver.get("https://httpbin.org/ip") print("Successfully started Firefox driver.") return driver except Exception as e: print("Caught an exception: ", repr(e)) def cleanupDriver(d): print("Cleaning up driver") d.quit() def cleanupContainer(c): print("Cleaning up container") c.stop() c.remove() def siteLogin(driver, username, password): driver.get("https://www.MYWEBSITE.com/login") driver.implicitly_wait(5) driver.get_screenshot_as_file("/home/fresh_login_screen.png") username_box = driver.find_element(by=By.NAME, value="emailInput") password_box = driver.find_element(by=By.NAME, value="passwordInput") submit_button = driver.find_element(by=By.CLASS_NAME, value="submitButton") time.sleep(2) username_box.send_keys(username) time.sleep(2) password_box.send_keys(password) time.sleep(2) driver.get_screenshot_as_file("/home/login_screen_keys_sent.png") time.sleep(2) #submit_button.click() # doesn't work #submit_button.submit() # doesn't work #password_box.submit() # doesn't work #password_box.send_keys(Keys.ENTER) # doesn't work submit_button.send_keys(Keys.ENTER) # doesn't work print("Waiting for login to process.") time.sleep(5) driver.get_screenshot_as_file("/home/submitted_login.png") time.sleep(10) driver.get_screenshot_as_file("/home/another_screenshot.png") print(driver.page_source) def main(): firefoxContainer = setupDockerFirefoxSeleniumContainer() print("Waiting 5 seconds for Selenium server to start") time.sleep(5) firefoxDriver = setupSeleniumFirefoxDriver() try: siteLogin(firefoxDriver, "[email protected]", "crazyHardPassword") except Exception as e: print("Caught an exception when trying siteLogin: ", repr(e)) finally: cleanupDriver(firefoxDriver) cleanupContainer(firefoxContainer) if __name__=="__main__": main() 登录提交不起作用。页面似乎挂了。在我的屏幕截图中,我可以看到我的用户名和密码已发送到正确的表单框。但是,我尝试了几种提交表格(send_keys(Keys.ENTER),click()和submit())的方法,但似乎一切都没有发生。屏幕截图在以前和之后看起来相同(用我的用户名和密码坐落在表单中,但似乎未尝试提交表格)。关于如何提交此表格的任何提示? 在您的自定义代码或浏览器选项中,这引起了问题。我下面的代码正常工作。 from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() url = "https://www.redfin.com/login" driver.get(url) username = "username" password = "password" driver.find_element(By.CSS_SELECTOR, "input[name='emailInput']").send_keys(username) driver.find_element(By.CSS_SELECTOR, "input[name='passwordInput']").send_keys(password) driver.find_element(By.CSS_SELECTOR, "button.submitButton").click() driver.quit()
我有WordPress网站,其中我上传了“ popup-menu.html”文件,以.html格式为.html。
I将HTML文件上传到我的主题目录中。我认为我应该将其上传到我的根目录,但是那会起作用吗? 我很好奇为什么我看不到该文件。我对WordPress有些忽视或不了解。请帮助我。
<script language="javascript"> $(document).ready(function () { /* Location Search */ $("#locationsTextSearch").on("input", GetTableData); $("#locationsTextSearch").on("focus", function () { $("#icon-search").addClass("icon-search-blue"); }); $("#locationsTextSearch").on("focusout", function () { $("#icon-search").removeClass("icon-search-blue"); }); // default warning to NotWarned in xamarin if (!CefSharpEnabled) { $("#transportationwarning").val("NotWarned"); } // Clicking procced is the same as submit $("#proceedButton").click(function () { $("#Form").submit(); }); //Set up Tab control $('.tabs').tabs(); //handle form submition $("#Form").submit(function () { if (ValidateLocationForms() && $(this)[0].checkValidity() == true) { // Show confim if needed ShowConfirm($(this)); } ValidateRequiredSingleSelectOnly($("#transportationprotocol")); ValidateRequiredSingleSelectOnly($("#transportationpriority")); return false; }); //focus on registration id field $("#currentodometer").focus(); }); function decimalCheck(input, event) { var str = input.value; if (event.keyCode == 69) { return false; } else if (str.includes(".") && !isNaN(event.key)) { var index = str.indexOf("."); if (str.length - index > 1) { return false; } } return true; } function lengthCheck(input) { if (input.value.includes(".")) { if (input.value.length > input.maxLength + 2) { input.value = input.value.slice(0, input.maxLength); } } else { if (input.value.length > input.maxLength) { input.value = input.value.slice(0, input.maxLength); } } return input; } function AfterFillForm() { GenerateSelectBox("transportationprotocol", "transportprotocol.xml", "genericselect.xsl", false, false, false, 1, false, false).then(function (result) { $("#protocolvals").prepend(result); SetSelectBoxFromParameters($("#transportationprotocol")); $("#transportationprotocol").prop("required", true); $("#transportationprotocol").change(function () { ValidateRequiredSingleSelectOnly($(this)); // Reload divert panel when changing protocol LoadDiverts(); }); // Load diverts on initial load when diverts are passed in. Wait till this time so that the protocol has been set and the list is filtered correctly LoadDiverts(); GenerateSelectBox("transportationpriority", "transportpriority.xml", "genericselect.xsl", false, false, false, 1, false, false).then(function (result) { $("#priorityvals").prepend(result); SetSelectBoxFromParameters($("#transportationpriority")); $("#transportationpriority").prop("required", true); $("#transportationpriority").change(function () { ValidateRequiredSingleSelectOnly($(this)); }); GenerateSelectBox("gender", "Gender.xml", "genericselect.xsl", false, false, false, 1, false, false).then(function (result) { $("#gendervals").prepend(result); SetSelectBoxFromParameters($("#gender")); GenerateSelectBox("transportstate", "state.xml", "genericselectvalue.xsl", false, false, false, 1, false, false).then(function (result) { $("#statevals").prepend(result); SetSelectBoxFromParameters($("#transportstate")); setVerifiedAddress(); AfterAllControlsInitialized(); // must go after last select intialized //GenerateSelectBox("Race", "Race.xml", "genericselect.xsl", false, false, false, 1, false, false).then(function (result) { // $("#racevals").prepend(result); // SetSelectBoxFromParameters($("#Race")); //}); }); }); }); }); // initialze modal if (!CefSharpEnabled)//xamarin only { $('.modal').modal(); } setDefaultLocation(); SetCurrentTab(); } function SetCurrentTab() { var selectedAddressTab = $("#SelectedAddressTab").val(); if (selectedAddressTab == "locationtab") { $("#tab1").children()[0].click(); } else { $("#tab2").children()[0].click(); $("#SelectedAddressTab").val(selectedAddressTab); } } function GetCurrentTab() { var selectedAddressTab = $("#SelectedAddressTab").val(); if (selectedAddressTab == "locationtab") { return "locationtab"; } else { return "addresstab"; } } function GetFacilityDiverts(locationName) { // request facility divert for location if (!CefSharpEnabled) { // Xamarin only var param = { _method: 'getFacilityDiverts', _locationName: locationName } invokeCSharp(JSON.stringify(param)); } } // called by c# whenthe facility divert request returns function FacilityDivertReturn(diverts) { if (diverts) { var response = JSON.parse(diverts); var currentTab = GetCurrentTab(); // if the user has selected another location or changed the tab since this facility divert status was requested just throw away the response if (response.locationName == $("#Form").data("lastQueriedLocation") && currentTab == $("#Form").data("selectedTabForLastQuery")) { LoadDiverts(response.diverts); } } } // call by c# when loading the transport form from a status error with divert information already contained function SetDiverts(diverts) { diverts = JSON.parse(diverts); var currentTab = GetCurrentTab(); $("#" + currentTab).data("diverts", diverts); } function LoadDiverts(diverts) { if (!diverts) { diverts = $("#" + GetCurrentTab()).data("diverts") } // clear diver panel if there are no diverts if (diverts && diverts.length > 0) { BuildDiverts(diverts); } else { ClearDiverts(); } } function BuildDiverts(diverts) { // cache diverts to current tab var currentTab = GetCurrentTab(); $("#" + currentTab).data("diverts", diverts); // clear DOM $("#divertListRow,#divertChipList,#divert_modal_reasons").empty(); var allReasons = []; var visibleDiverts = 0; var currentProtocol = $("#protocolvals .dropdown-trigger").val(); // process all diverts for (var i = 0; i < diverts.length; i++) { var divert = diverts[i]; // find if current divert matches selected protocol var divertReasons = ""; for (var j = 0; j < divert.Reason.length; j++) { var reason = divert.Reason[j]; if (!currentProtocol || !reason.Protocols || reason.Protocols.split(",").includes(currentProtocol)) { divertReasons += reason.Name + " \u2014 "; // add dash character if (!allReasons.includes(reason.Name)) { allReasons.push(reason.Name); // keep list of unique reasons so we dont duplicate chips also used by modal // Add chip for each reason var $chip = $('<div class="chip">' + reason.Name + '</div>'); $chip.click((e) => { var $e = $(e.currentTarget); $("#divertListRow div:contains(" + $e.text() + ")")[0].scrollIntoView(); }) $("#divertChipList").append($chip); } } } // Build card for divert if it has matching reasons if (divertReasons) { visibleDiverts++; $("#divertLocationName").text(divert.LocationName.toUpperCase()); divertReasons = divertReasons.substring(0, divertReasons.length - 3); if (!divert.EndDate) { divert.EndDate = "N/A"; } var $divertRow = $('<div class="row"></div>'); $divertRow.append('<div class="row divertHeader">' + divertReasons + '<div>'); var $timeRow = $('<div class="row"></div>'); $timeRow.append('<div class="col s6"><i class="icon-clock icon-18"></i><span class="divertLabel">Starts:</span><span class="divertValue">' + divert.StartDate + '</span></div>'); $timeRow.append('<div class="col s6"><span class="divertLabel">Ends:</span><span class="divertValue">' + divert.EndDate + '</span></div>'); $divertRow.append($timeRow); if (divert.Comments) { $divertRow.append('<div class="row divertComments">' + divert.Comments + '<div>'); } $("#divertListRow").append($divertRow); } } // if we have divert that matches selected protocol show divert panel if (visibleDiverts > 0) { // Show chips if (visibleDiverts > 1) { $("#divertChipsRow").show(); } else { $("#divertChipsRow").hide(); } // Update modal $("#divert_modal_msg").text("You will procced to " + divert.LocationName + ", which has the follow diverts:"); for (var k = 0; k < allReasons.length; k++) { if (k % 2 == 0) { var $modalRow = $('<div class="row"></div>'); $("#divert_modal_reasons").append($modalRow); } $modalRow.append('<div class="col s6">- ' + allReasons[k] + '</div>'); } ShowDivertPanel(); } else { HideDivertPanel(); } } function ClearDiverts() { // clear cached diverts var currentTab = GetCurrentTab(); $("#" + currentTab).removeData("diverts"); HideDivertPanel(); } function ShowDivertPanel() { // Update html to not shrink when divert panel is shown $(".Flex-Form-Diverts").show(); $(".Flex-Form-MainContent > div").css("margin-right", "20px"); $(".Flex-Form-MainContent > .col > .row > .s2").removeClass("s2").addClass("s4"); $(".Flex-Form-MainContent > .col > .row > .s6").removeClass("s6").addClass("s12"); $(".Flex-Form-MainContent > .col > .row > .row .s8").removeClass("s8").addClass("s12"); $(".Flex-Form-MainContent .tab.s2").removeClass("s2").addClass("s4"); $("#addresstab .input-field.s2").removeClass("s2").addClass("s3"); $("#addresstab .input-field.s4").removeClass("s4").addClass("s6"); $('.tabs').tabs(); } function HideDivertPanel() { // Update html to not grow when divert panel is hidden $(".Flex-Form-Diverts").hide(); $(".Flex-Form-MainContent > div").css("margin-right", "41px"); $(".Flex-Form-MainContent > .col > .row > .s4").removeClass("s4").addClass("s2"); $(".Flex-Form-MainContent > .col > .row > .s12").removeClass("s12").addClass("s6"); $(".Flex-Form-MainContent > .col > .row > .row .s12").removeClass("s12").addClass("s8"); $(".Flex-Form-MainContent .tab.s4").removeClass("s4").addClass("s2"); $("#addresstab .input-field.s3").removeClass("s3").addClass("s2"); $("#addresstab .input-field.s6").removeClass("s6").addClass("s4"); $('.tabs').tabs(); } function LocationSelected(value) { if (value) { // if a different location is selected rerun query if (value != $("#Form").data("lastQueriedLocation")) { GetFacilityDiverts(value); $("#Form").data("selectedTabForLastQuery", GetCurrentTab()); // always clear diverts when requesting diverts for a new location ClearDiverts(); } } // if selecting an address without a value we still want to invalidate previous queries $("#Form").data("lastQueriedLocation", value); } function LocationCleared() { // clear last queried location when clearing location so that outstanding divert request are ignored $("#Form").data("lastQueriedLocation", ""); ClearDiverts(); } function AfterTabChanged(value) { // each tab can have different cached set of diverts for the location selected under that address. // reload panel after changing tab LoadDiverts(); } async function ShowConfirm($form) { // if divert panel is visible show modal for confirmation var allowSubmit = true; if ($(".Flex-Form-Diverts").is(":visible")) { allowSubmit = await openModal('PROCEED TO LOCATION?'); if (allowSubmit) { // if the select confim then updat this flag to allow the server to bypass validation of divert status $("#transportationwarning").val("Warned"); } } if (allowSubmit) { $(':disabled').each(function (e) { $(this).removeAttr('disabled'); }) // If we are submitting with the address tab selected dont submit a location. // This can cause a bug were the wrong location is passed to the business layer var currentTab = GetCurrentTab(); if (currentTab != "locationtab") { $("#location").val(""); } var values = $form.serialize(); SubmitQuery(values, $form.attr('action')); } }
如何使用Google Maps JavaScript API的Alpha通道删除。仅出于开发目的
使用Google Maps JavaScript API的Alpha频道。仅出于开发目的。
我正在尝试使用Selenium登录网站。相关形式HTML如下:
import time import docker from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys def setupDockerFirefoxSeleniumContainer(): client = docker.from_env() client.images.pull("selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250303") firefox = client.containers.run("selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250303", detach = True, name = "firefox", ports = {4444: 4444, 7900: 7900}, shm_size = "2G", environment = ["SE_START_XVFB=false", "SE_SCREEN_WIDTH=1200", "SE_SCREEN_HEIGHT=900"]) return firefox def setupSeleniumFirefoxDriver(): try: options=webdriver.FirefoxOptions() options.add_argument("--headless") options.add_argument("--disable-gpu") options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:36.0) Gecko/20100101 Firefox/135.0") driver = webdriver.Remote( command_executor="http://127.0.0.1:4444/wd/hub", options=options ) driver.get("https://httpbin.org/ip") print("Successfully started Firefox driver.") return driver except Exception as e: print("Caught an exception: ", repr(e)) def cleanupDriver(d): print("Cleaning up driver") d.quit() def cleanupContainer(c): print("Cleaning up container") c.stop() c.remove() def siteLogin(driver, username, password): driver.get("https://www.MYWEBSITE.com/login") driver.implicitly_wait(5) driver.get_screenshot_as_file("/home/fresh_login_screen.png") username_box = driver.find_element(by=By.NAME, value="emailInput") password_box = driver.find_element(by=By.NAME, value="passwordInput") submit_button = driver.find_element(by=By.CLASS_NAME, value="submitButton") time.sleep(2) username_box.send_keys(username) time.sleep(2) password_box.send_keys(password) time.sleep(2) driver.get_screenshot_as_file("/home/login_screen_keys_sent.png") time.sleep(2) #submit_button.click() # doesn't work #submit_button.submit() # doesn't work #password_box.submit() # doesn't work #password_box.send_keys(Keys.ENTER) # doesn't work submit_button.send_keys(Keys.ENTER) # doesn't work print("Waiting for login to process.") time.sleep(5) driver.get_screenshot_as_file("/home/submitted_login.png") time.sleep(10) driver.get_screenshot_as_file("/home/another_screenshot.png") print(driver.page_source) def main(): firefoxContainer = setupDockerFirefoxSeleniumContainer() print("Waiting 5 seconds for Selenium server to start") time.sleep(5) firefoxDriver = setupSeleniumFirefoxDriver() try: siteLogin(firefoxDriver, "[email protected]", "crazyHardPassword") except Exception as e: print("Caught an exception when trying siteLogin: ", repr(e)) finally: cleanupDriver(firefoxDriver) cleanupContainer(firefoxContainer) if __name__=="__main__": main() 登录提交不起作用。页面似乎挂了。在我的屏幕截图中,我可以看到我的用户名和密码已发送到正确的表单框。但是,我尝试了几种提交表格(send_keys(Keys.ENTER),click()和submit())的方法,但似乎一切都没有发生。屏幕截图在以前和之后看起来相同(用我的用户名和密码坐落在表单中,但似乎未尝试提交表格)。关于如何提交此表格的任何提示? 在您的自定义代码或浏览器选项中,这引起了问题。我下面的代码正常工作。 from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() url = "https://www.redfin.com/login" driver.get(url) username = "username" password = "password" driver.find_element(By.CSS_SELECTOR, "input[name='emailInput']").send_keys(username) driver.find_element(By.CSS_SELECTOR, "input[name='passwordInput']").send_keys(username) driver.find_element(By.CSS_SELECTOR, "button.submitButton").click() driver.quit()