試圖完成:我試圖讓訊息框顯示標簽元素。但我收到了發布的錯誤。獲取標簽的原因是試圖確保正確檢查復選標記 b/c 復選框結果總是分散的。我試圖找到正確的標簽,然后在正確的標簽上打勾。
元素的影像
完整的 XPath:
//html/body/form/table/tbody/tr/td[2]/div[1]/table/tbody/tr[5]/td/table/tbody/tr[1]/td[1]/label]
X路徑:
//*[@id="UserAdminForm1_chkListAccess"]/tbody/tr[1]/td[1]/label
嘗試過:
IWebElement up_names = null;
up_names = caller.driver.FindElement(By.XPath("//*[@id='UserAdminForm1_chkListAccess']/tbody/tr[1]/td[1]/label"));
MessageBox.Show(Convert.ToString(up_names), "Name", MessageBoxButtons.OK);
錯誤:
[OpenQA.Selenium.NoSuchElementException
HResult=0x80131500
Message=no such element: Unable to locate element: {"method":"xpath","selector":"//*\[@id='UserAdminForm1_chkListAccess'\]/tbody/tr\[1\]/td\[1\]/label"}
(Session info: chrome=96.0.4664.45)
Source=WebDriver
StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath)
at OpenQA.Selenium.By.<>c__DisplayClass19_0.<XPath>b__0(ISearchContext context)
at OpenQA.Selenium.By.FindElement(ISearchContext context)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
at Paya.Form1.button1_Click(Object sender, EventArgs e) in \\KS\Project\Form1.cs:line 109
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)][1]
uj5u.com熱心網友回復:
你得到
no such element: Unable to locate element: {"method":"xpath","selector":"//*\[@id='UserAdminForm1_chkListAccess'\]/tbody/tr\[1\]/td\[1\]/label"}
例外,這可能意味著以下內容:
- 此標簽位于 iframe 下。
- 此標簽位于 shadow-root 下。
- 您不應該在 selenium 啟動的新選項卡/視窗上。
- 元素未完全呈現,您正試圖與其進行互動。
所以,首先你應該檢查
//input[@id='UserAdminForm1_chkListAccess_0']//following-sibling::label[@for='UserAdminForm1_chkListAccess_0']
XPath 是否唯一。
檢查步驟:
Press F12 in Chrome- >去element節- >做一個CTRL F- >再貼上xpath看看,如果你需要的element是越來越強調與1/1匹配的節點。
如果是unique并且以上conditions都是錯誤的,那么您可以嘗試以下代碼;
var up_names = caller.driver.FindElement(By.XPath("//input[@id='UserAdminForm1_chkListAccess_0']//following-sibling::label[@for='UserAdminForm1_chkListAccess_0']"));
如果你的硒版本支持顯式等待然后
var up_names = new WebDriverWait(driver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@id='UserAdminForm1_chkListAccess_0']//following-sibling::label[@for='UserAdminForm1_chkListAccess_0']")));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364299.html
