我正在尝试运行一个硒脚本,该脚本将在用户输入动态搜索字段后返回屏幕上显示的文本。
我能够输入文本并在屏幕上看到结果,但是由于正在使用的ID字段是动态的,所以我的Javascript输出文本无效。
我试图使文本显示在浏览器控制台中,以便可以在Javascript中使用它。如果我按ID尝试但使用了动态分配的ID,那么我会得到适当的回报,但是,下一次页面刷新时,该ID将不再有效。
HTML如下:
<input
type="text"
id="origin-29890"
name="origin"
class="ej-input origin ui-autocomplete-input"
required=""
aria-label="From Airport"
data-routesearch-placeholder="e.g. London Gatwick"
aria-describedby="route-search-origin-description"
aria-autocomplete="list"
aria-expanded="false"
autocomplete="off"
aria-owns="ui-id-1"
placeholder="e.g. London Gatwick"
aria-activedescendant="selected-autocomplete-item">
如果我尝试使用getElementsByClassName代替,然后在浏览器控制台中运行它,我将无法获得所需的内容;
"f values() { [native code] }
如果该字段是静态的,则以下内容将起作用
String script = "return document.getElementById(\"origin\").value";
String text= (String) jse.executeScript(script);
System.out.println(text);
我正在寻找一种更改返回文档行以使用动态ID或显示的方式使脚本接受Xpath的方式,以便我可以添加一个带有标签的开头
答案 0 :(得分:1)
我想您可以按名称找到它。请尝试以下方法:
"include": [
"src/config/*.json"
]
答案 1 :(得分:1)
您可以使用XPath locator来定位元素,例如:
WebElement myInput = driver.findElement(By.xpath("//input[@name='origin']"));
完成后,您可以获取其id
attribute:
System.out.println(myInput.getAttribute("id"));
或者,如果需要,您可以通过value
attribute来获得JavaScriptExecutor,例如:
System.out.println(driver.executeScript("return [0].value", myInput));