请原谅我相对较少的硒知识,但我想做的是使用 servicenow 测试实例(开发人员网站允许您免费设置它们),并在其中尝试找到搜索框的元素,并且我已经通过 ID、XPath 和其他方式尝试过,但到目前为止它一直给我 NoSuchElementException。由于您可能不想设置整个帐户来查看 HTML,因此这里有一个 Pastebin:https://pastebin.com/1Yx7yxmi
如果你搜索,你会看到它有一个我认为是搜索框的 ID(显示我正在复制以尝试通过它找到它的 xpath): //*[@id="sncwsgs-typeahead -输入“]
我尝试过以下方法:
var searchElement = driver.FindElement(By.Id("sncwsgs-typeahead-input"));
有什么想法吗?我确信这完全有可能,我只是对 selenium 和 HTML 非常不好,所以任何测试过这个并让它工作的人都可能知道任何技巧,这现在会很方便!
我也尝试过这个完整的xpath:
/html/body/macroponent-f51912f4c700201072b211d4d8c26010//div/sn-canvas-appshell-root/sn-canvas-appshell-layout/sn-polaris-layout//div[2]/div[2]/div[1]/sn-polaris-header//nav/div/div[3]/div[1]/div[1]/div/sn-search-input-wrapper//sn-component-workspace-global-search-typeahead//div/div/div/div/input
您可以仔细检查非框架中的搜索框,然后您需要使用其定位器切换框架,否则在执行此操作之前已经切换框架,那么您需要切换回默认
从浏览器控制台尝试下面的示例,看看这是否可以识别元素
如果您想通过
id
查找元素并直接在浏览器控制台中使用 JavaScript 与其交互,则可以使用 document.getElementById
方法。这是 JavaScript 中的等效代码:
var searchElement = document.getElementById("sncwsgs-typeahead-input");
检索元素后,您可以对其进行操作或触发操作,例如设置其值、聚焦于它,甚至模拟单击。例如,如果您想在输入字段中输入一些文本,您可以这样做:
searchElement.value = "your text here"; // Sets the value
searchElement.focus(); // Focuses on the element
或者,如果您想模拟点击:
searchElement.click();
只需将这些行粘贴到浏览器控制台中即可执行它们。