Passing Datatable item in xpath and getting error "javascript error: arguments[0].scrollIntoView is not a function"
Passing Datatable item in xpath and getting error "javascript error: arguments[0].scrollIntoView is not a function"
你好,我是 c# 和 specflow 的新手。
我有一个包含 1 个数据表的场景大纲
Examples:
| Name | ID | Attendence| Date |
| Shan | 1003 - Shan | FT | 10/22/2021 |
| Sam | ZYZ | FT | 10/22/2021 |
以上是我的代码(页码)
IList<IWebElement> AllList = new List<IWebElement>(driver.FindElements(By.XPath("//*[@id='Myul']/li"))); //get all elements in the list
var path = driver.FindElement(By.XPath("//span[contains(text(),'" + ID + "')]"));
IJavaScriptExecutor je = (IJavaScriptExecutor)driver;
je.ExecuteScript("arguments[0].scrollIntoView(false);", AllList.Contains(path));
Thread.Sleep(2000);
if (path.Displayed)
{
path.Click();
}
我试图将我在功能文件中设置的 ID 传递到 xpath 中,但出现以下错误:
OpenQA.Selenium.WebDriverException: 'javascript error: arguments[0].scrollIntoView is not a function
AllList.Contains(path)
returns 一个布尔值。这是调用 arguments[0].scrollIntoView(false);
的上下文,这意味着 JavaScript 正在尝试对 true/false 值而不是 HTMLElement 对象执行 scrollIntoView(false);
。
AllList.Contains(path)
方法只是测试 path
是否是 AllList
集合中的一项。这对你想要完成的事情没有多大意义。您可能只需要传递 path
:
je.ExecuteScript("arguments[0].scrollIntoView(false);", path);
由于 path
在 C# 中是一个 IWebElement
,JavaScript 会将其解释为 HTMLElement 对象指向与您的相同的 HTML 标记IWebElement在C#中引用。这是调用执行 HTMLElement.scrollIntoView(boolean) 的 arguments[0].scrollIntoView(false);
的上下文。我相信这是您要调用的 JavaScript 方法。
你好,我是 c# 和 specflow 的新手。
我有一个包含 1 个数据表的场景大纲
Examples:
| Name | ID | Attendence| Date |
| Shan | 1003 - Shan | FT | 10/22/2021 |
| Sam | ZYZ | FT | 10/22/2021 |
以上是我的代码(页码)
IList<IWebElement> AllList = new List<IWebElement>(driver.FindElements(By.XPath("//*[@id='Myul']/li"))); //get all elements in the list
var path = driver.FindElement(By.XPath("//span[contains(text(),'" + ID + "')]"));
IJavaScriptExecutor je = (IJavaScriptExecutor)driver;
je.ExecuteScript("arguments[0].scrollIntoView(false);", AllList.Contains(path));
Thread.Sleep(2000);
if (path.Displayed)
{
path.Click();
}
我试图将我在功能文件中设置的 ID 传递到 xpath 中,但出现以下错误:
OpenQA.Selenium.WebDriverException: 'javascript error: arguments[0].scrollIntoView is not a function
AllList.Contains(path)
returns 一个布尔值。这是调用 arguments[0].scrollIntoView(false);
的上下文,这意味着 JavaScript 正在尝试对 true/false 值而不是 HTMLElement 对象执行 scrollIntoView(false);
。
AllList.Contains(path)
方法只是测试 path
是否是 AllList
集合中的一项。这对你想要完成的事情没有多大意义。您可能只需要传递 path
:
je.ExecuteScript("arguments[0].scrollIntoView(false);", path);
由于 path
在 C# 中是一个 IWebElement
,JavaScript 会将其解释为 HTMLElement 对象指向与您的相同的 HTML 标记IWebElement在C#中引用。这是调用执行 HTMLElement.scrollIntoView(boolean) 的 arguments[0].scrollIntoView(false);
的上下文。我相信这是您要调用的 JavaScript 方法。