[英]Unable to locate xpath element - Selenium, Python, Chromedriver
我是編碼新手,正在嘗試在我的工作中自動化入職流程。
adminB = driver.find_element(By.XPATH, '//*[@id="2rollUpBtnX"]/table/tbody/tr/td')
adminB.click()
^ 此代碼正在返回 - “NoSuchElementException:消息:沒有這樣的元素:無法定位元素:{“method”:“xpath”,“selector”:“//* [@id =“2rollUpBtnX”] / table / tbody / tr/td"}(會話信息:chrome=100.0.4896.60)
每當我嘗試通過 xpath 訪問頁面上的任何元素時,我都會遇到同樣的錯誤。我也嘗試過名稱和元素 ID。 我懷疑頁面上的所有元素都被正文隱藏了。 我必須在頁面上檢查該元素兩次才能拉出任何元素。 第一次檢查拉起主體,然后第二次檢查拉起所需的元素。 這是第一次檢查時顯示的內容。
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="./stylesheets/standard.css"><script type="text/javascript" language="javascript" src="./javascript/global.jmf"></script><script type="text/javascript" src="./javascript/cookie.jmf"></script><script type="text/javascript" language="JavaScript">
if (document.cookie)
{
if (getCookieCount("vmf_ver") == 0)
{
DeleteAllCookies();
setCookie("vmf_ver", "6.9.0.0", "01/01/2099");
}
else
{
if(getCookieNum("vmf_ver", getCookieCount("vmf_ver")) != "6.9.0.0")
{
alert("A new version of MailFlow has been detected!\\r\\n\\r\\nPlease clear your browser cache of\\r\\nall temporary Internet files.");
setCookie("vmf_ver", "6.9.0.0", "01/01/2099");
}
}
}
function docSetLoading(show)
{
if (show)
{
document.getElementById("titlebarstatusoff").style.display = "block";
document.getElementById("titlebarstatuson").style.display = "none";
}
else
{
document.getElementById("titlebarstatusoff").style.display = "none";
document.getElementById("titlebarstatuson").style.display = "block";
}
}
\</script\>\<title\>VisNetic MailFlow\</title\>
</head><body id="mailflowBody" style="border:1px inset!important;overflow:hidden"><table style="height:100%;width:100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="border:1px outset;"><table style="table-layout:fixed;width:100%;background-image:url('./images/gradient.gif');background-repeat:no-repeat;background-color:#a6b1cc;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="100%" nowrap="true"><table style="table-layout:fixed;width:100%;" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td unselectable="on" id="titlebarmenu" style="overflow:hidden;text-overflow:ellipsis;font-size:12pt;font-weight:bold;color:#FFFFFF;padding-left:6px;height:25px;"><span id="titlebarmenutext" unselectable="on">My Tickets</span></td><td width="199" height="25" align="right"><span id="titlebarstatusoff" style="display: block;"><a href="#" onclick="glo_launchModalWindow('about.ems', 450, 500);"><img src="./images/mailflowwhite.gif" width="199" height="25" border="0"></a></span><span style="padding-right: 6px; display: none;" id="titlebarstatuson"><img src="./images/loading.gif" width="16" height="16" border="0"></span></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style="height:100%;"><iframe id="theMainContain" name="theMainContain" style="width:100%;height:100%;" frameborder="0" scrolling="NO" src="main.ems"></iframe></td></tr></tbody></table>
<xml id="docXML"><root><user><id>558</id>
<useim>1</useim><newmessageformat>0</newmessageformat><useautofill>0</useautofill><outboundapproval>0</outboundapproval><outboundapprover>0</outboundapprover><stylesheetname>./stylesheets/standard.css</stylesheetname><menubackcolor>#D4D0C8</menubackcolor><isadmin>1</isadmin><escalatetoagentid>0</escalatetoagentid><quotemsginreply>1</quotemsginreply><replyquotedprefix>> </replyquotedprefix><forcespellcheck>1</forcespellcheck><signaturetopreply>1</signaturetopreply><showmessagesinbound>1</showmessagesinbound><usepreviewpane>1</usepreviewpane><closeticketaftersend>2</closeticketaftersend><autoroutetoinbox>2</autoroutetoinbox><usemarkasread>0</usemarkasread><markasreadseconds>5</markasreadseconds><defaultticketboxid>1</defaultticketboxid><defaultticketdblclick>0</defaultticketdblclick><readreceipt>0</readreceipt><deliveryconfirmation>0</deliveryconfirmation><statusid>1</statusid><statustext>Online</statustext><onlinetext>Online</onlinetext><awaytext>Away</awaytext><notavailtext>Not Available</notavailtext><dndtext>Do Not Disturb</dndtext><offlinetext>Offline</offlinetext><oootext>Out of Office</oootext><autostatustypeid>2</autostatustypeid><autostatusmin>0</autostatusmin><logoutstatusid>5</logoutstatusid><logouttext>Offline</logouttext><autotext>Away</autotext><access><contact>4</contact><stdresp>4</stdresp><stdreports>4</stdreports><schedreports>4</schedreports><autoopen>4</autoopen><agentaudit>4</agentaudit><voip>4</voip><pref>4</pref><prefgen>4</prefgen><preftb>4</preftb><prefav>4</prefav><prefsig>4</prefsig><prefmydict>4</prefmydict><prefmyfold>4</prefmyfold><prefmyal>4</prefmyal><prefmycont>4</prefmycont><rrtm>4</rrtm><ctas>4</ctas><rrr>4</rrr><rdc>4</rdc></access></user><document><lcid>1033</lcid><title>MailFlow</title><chgnotsavedmsg>Your changes have not been saved!</chgnotsavedmsg><useragent>Chrome</useragent><useros>Windows</useros><serverid>2</serverid><filename>mailflow.ems</filename><usehttps>1</usehttps><allowlogout>0</allowlogout><usevoip>0</usevoip><ticketclose>2</ticketclose><ticketroute>2</ticketroute><updatefreq>300</updatefreq><statusfreq>30</statusfreq><useverification>0</useverification><usedatetime>0</usedatetime><dateformat>0</dateformat><urlparameters></urlparameters></document></root></xml></body></html>
第二次檢查拉起我從哪里得到 xpath。
我嘗試通過 xpath、元素 ID 和名稱訪問頁面上的不同元素,但沒有成功。 我還嘗試模擬點擊網頁正文並嘗試在之后找到元素。 到目前為止,這是我的代碼..
import selenium
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\Users\\user.name\\Documents\\VSCode\\Chromedriver\\chromedriver.exe")
driver.get("https://website-here.ems") ## I've put in the actual address in my code.
input("Login, then hit enter.")
adminB = driver.find_element(By.XPATH, '//*[@id="2rollUpBtnX"]/table/tbody/tr/td')
adminB.click()
不同網站上的相同腳本按預期工作。
import selenium
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\Users\\user.name\\Documents\\VSCode\\Chromedriver\\chromedriver.exe")
driver.get("https://www.python.org/")
input("Login, then hit enter.")
adminB = driver.find_element(By.XPATH, '//*[@id="documentation"]/a')
adminB.click()
時間似乎不是這個問題的一個因素。 頁面加載后,我等了 3-5 分鍾才按回車鍵。 任何關於如何進行的指示將不勝感激。
發現了問題。 在單擊按鈕之前,我必須先找到按鈕所在的框架 select。
def frame_switch(name):
driver.switch_to.frame(driver.find_element_by_name(name))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.