您可以在下面使用try
WebDriverWait wait = new WebDriverWait(driver, 5)
JavascriptExecutor js = ((JavascriptExecutor) driver)
//Present in DOM
wait.until(ExpectedConditions.presenceOfElement(By.id("ID")));
//scroll to view
WebElement element = driver.findElement(By.id("ID")));
js.executeScript("arguments[0].scrollIntoView(true);", element);
//Click
wait.until(ExpectedConditions.elementToBeClickable(By.id("ID")));
我之前遇到过类似的问题,即使元素未显示在屏幕上,驱动程序也无法捕获它们(即使它们出现在网页上(您必须上下滚动才能处理它们))。在检查我的项目后,我发现问题是由过时的chrome驱动程序引起的。
这是我建议的解决方案:
-
尝试调试,在找到textarea元素之前设置一个断点。当调试执行在您的断点处暂停时,滚动页面以使textarea可见。继续执行。如果仍然遇到问题,则可能必须检查选择器。但是,如果手动滚动干预没有遇到任何问题,则可能是驱动程序/浏览器问题。
-
确保您的Chrome驱动程序已更新,并且计算机上已安装Chrome浏览器。 Chrome驱动程序的最新版本通常发布在这里:
http://chromedriver.chromium.org/downloads
-
如果无法更新驱动程序/浏览器或无法进行更新,作为解决方法,可以尝试在使用“动作”构建器获取元素之前尝试插入上一页或下一页动作。
< / li>
这是示例代码:
Actions actions = new Actions(driver);
actions
.moveToElement(anyVisibleElement)
.sendKeys(Keys.PAGE_UP)
.build()
.perform();
要单击带有默认文本为的文本区域,具体项目取决于学生的兴趣,背景和完成的课程。。您必须根据需要诱导 WebDriverWait 可点击的元素如下:
-
X = df[['param_a']]
y= df[['param_b']]
:
cssSelector
-
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("textarea.text-full.wysiwyg.form-textarea#edit-body-und-0-value>p"))).click();
:
xpath