Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
getText(),JavascriptExecutor,innerText,textContent only从只读字段返回null_Java_Selenium_Selenium Chromedriver - Fatal编程技术网

getText(),JavascriptExecutor,innerText,textContent only从只读字段返回null

getText(),JavascriptExecutor,innerText,textContent only从只读字段返回null,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,关键更新: 当我们使用Selenium访问页面时,似乎永远不会加载只读字段。它是一个document.jsp页面,用于加载。但是当我们手动到达页面时,我们得到了数据。我用的是ChromeDriver。我想这就是为什么在使用Selenium时无法检索只读字段的原因。如果有人知道附近有工作,请告诉我 更新:写这个问题后,我再次尝试使用CSS的innerText,但它返回的是“”而不是“brown”。看来我能找回一些东西。但是它是。我怎样才能得到“铜牌” 我试图使用ChromDriver从只读元素的字

关键更新: 当我们使用Selenium访问页面时,似乎永远不会加载只读字段。它是一个document.jsp页面,用于加载。但是当我们手动到达页面时,我们得到了数据。我用的是ChromeDriver。我想这就是为什么在使用Selenium时无法检索只读字段的原因。如果有人知道附近有工作,请告诉我

更新:写这个问题后,我再次尝试使用CSS的innerText,但它返回的是“
”而不是“brown”。看来我能找回一些东西。但是它是
。我怎样才能得到“铜牌”

我试图使用ChromDriver从只读元素的字段中检索文本。下面是HTML代码。我想找回“青铜”这个字符串

更新2:

这也会返回[]:

String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='readonly-wrapper' and starts-with(@id,'readonly_') and contains(@id,'_dealClass_t')]"))).getAttribute("innerHTML");

根据您为检索字符串brown而共享的HTML,您必须诱导WebDriverWait以获得元素的可见性,如下所示:

String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='readonly-wrapper' and starts-with(@id,'readonly_') and contains(@id,'_dealClass_t')]"))).getAttribute("innerHTML");

我认为您可以通过以下方式获取“innerHTML”属性:

final String script = "return arguments[0].getAttribute('innerHTML')";

WebElement randomRow = driver.findElement(By.xpath("(//div[@class='field']/span)[21]"));
String value = (String) ((JavascriptExecutor) driver).executeScript(script, randomRow);

因此,在多次尝试和错误运行之后,结果表明,当使用Selenium登录页面时,页面没有完全加载。我复制了使用Selenium打开的URL,并将其与手动打开的URL进行了比较。他们是不同的。对于Selenium加载的页面,紧跟在
document.jsp
之后的
formCreate
部分完全不同。因此,为了避免太多的麻烦,我使用了
driver.get(“url”)
,其中
“url”
是实际的url,然后让它打开。这就正确地加载了字段,我能够进行验证。

没有看到导致问题的代码,只能进行猜测。如果该元素在页面呈现后通过javascript自动填充,则选中时该元素可能实际包含
。如果您在检查内容之前睡了一会儿(不是推荐的长期解决方案),它是否找到了
brown
?请尝试使用
driver.findelelement(By.xpath(//div[@class='field']]/span[contains(,'brown'))).getText()我知道这不是ue解决方案,但首先看看您是否能够获得Text@Ron诺里斯-它实际上睡了大约10秒钟。但仍然返回该值。我通过填写上一页中的数据进入本页。当我到达此页时,这些字段将填充上一页检索到的数据。这确实是js呈现这个页面。它只是拒绝找到“青铜”。但在页面上我可以看到青铜色。你能告诉我还有什么其他信息可以帮助你吗?@kushal-它返回“找不到元素”@666:好的,现在试试driver.findElement(By.xpath(//div[@class='field']/span)).getText();已经完成了。而且也有线程睡眠。这就是为什么我对它无法检索感到困惑的原因。我不确定你所说的
线程睡眠
是什么意思,请使用答案中提供的解决方案并告诉我状态。如果您看到错误,请使用代码试用和错误堆栈跟踪更新问题以进行进一步分析。它返回[],我已在上面的问题中对其进行了更新。java.lang.AssertionError:预期为[Brown],但发现[null],请参阅上面的我的更新。Selenium似乎没有加载只读字段。这是一个javascript文档页面。我以前从未遇到过这样的问题,即Selenium不加载数据,但到达页面时手动加载数据。@666您是否可以共享URL?很抱歉,由于商业隐私原因,无法共享该URL。我发现它在使用Selenium时不会进入该页面。我已将其传达给web开发人员。我正试图弄明白为什么使用Selenium它不起作用。使用上述代码捕获的“值”是什么?它是空的吗?
String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='readonly-wrapper' and starts-with(@id,'readonly_') and contains(@id,'_dealClass_t')]"))).getAttribute("innerHTML");
final String script = "return arguments[0].getAttribute('innerHTML')";

WebElement randomRow = driver.findElement(By.xpath("(//div[@class='field']/span)[21]"));
String value = (String) ((JavascriptExecutor) driver).executeScript(script, randomRow);