Selenium - 现在找不到服务搜索框来输入文本

问题描述 投票:0回答:1

请原谅我相对较少的硒知识,但我想做的是使用 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
c# html selenium-webdriver screen-scraping servicenow
1个回答
0
投票

您可以仔细检查非框架中的搜索框,然后您需要使用其定位器切换框架,否则在执行此操作之前已经切换框架,那么您需要切换回默认

从浏览器控制台尝试下面的示例,看看这是否可以识别元素

如果您想通过

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();

只需将这些行粘贴到浏览器控制台中即可执行它们。

© www.soinside.com 2019 - 2024. All rights reserved.