Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用getElementById运行JavascriptExecutor时,如何使用动态的ID字段_Java_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

在使用getElementById运行JavascriptExecutor时,如何使用动态的ID字段

在使用getElementById运行JavascriptExecutor时,如何使用动态的ID字段,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,我正在尝试运行一个selenium脚本,该脚本将在用户输入动态搜索字段后返回屏幕上显示的文本 我可以输入文本并在屏幕上看到结果,但我的Javascript输出文本不起作用,因为我使用的ID字段是动态的 我试图让文本显示在浏览器控制台中,以便在Javascript中使用它。如果我尝试按ID,但使用动态分配的ID,则会得到相应的返回,但是,下次页面刷新时,该ID将不再有效 HTML格式如下: <input type="text" id="origin-29890"

我正在尝试运行一个selenium脚本,该脚本将在用户输入动态搜索字段后返回屏幕上显示的文本

我可以输入文本并在屏幕上看到结果,但我的Javascript输出文本不起作用,因为我使用的ID字段是动态的

我试图让文本显示在浏览器控制台中,以便在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">

我正在寻找一种方法,要么将返回文档行更改为使用动态id,要么让脚本接受Xpath,这样我就可以包含一个以开头的标记,我想您可以通过名称找到它。请试试这个:

String script = "return document.getElementsByName(\"origin\").value";

我想你可以通过名字找到它。请试试这个:

String script = "return document.getElementsByName(\"origin\").value";

您可以使用以下方法定位元素:

完成后,您可以获得以下信息:

或者,如果您需要,您可以通过以下方式获得:


您可以使用以下方法定位元素:

完成后,您可以获得以下信息:

或者,如果您需要,您可以通过以下方式获得:


将id分配给一个全局变量并在getElementById()中使用它怎么样?您也可以共享HTML吗?根据请求添加了HTML,以便尝试将文本从Airport字段发送到
,然后从同一字段提取相同的文本?您的确切用例是什么?将id分配给一个全局变量并在getElementById()中使用如何?您也可以共享您的HTML吗?根据请求添加HTML以尝试从Airport向
字段发送文本,然后从同一字段提取相同的文本?你的具体用例是什么?非常感谢!我花了很长时间试图弄清楚如何使用它,使得getElementById标记在某种xpath中只使用了ID标记的一部分,而在我到达该部分并将其添加到其中之前,从未想过要计算出ID是什么。@StevenK您可以使用
By.name(“origin”)代替xpath
也一样。一旦拥有元素,就没有必要获取ID。如果您真的需要使用JS单击等,您可以传入元素并单击它。非常感谢!我花了很长时间试图弄清楚如何使用它,使得getElementById标记在某种xpath中只使用了ID标记的一部分,而在我到达该部分并将其添加到其中之前,从未想过要计算出ID是什么。@StevenK您可以使用
By.name(“origin”)代替xpath
也一样。一旦拥有元素,就没有必要获取ID。如果您真的需要使用JS单击等,您可以传入元素并单击它。
WebElement myInput = driver.findElement(By.xpath("//input[@name='origin']"));
System.out.println(myInput.getAttribute("id"));
 System.out.println(driver.executeScript("return [0].value", myInput));