pan*_*raj 28 java selenium selenium-webdriver
WebDriver无法识别某些WebElements,WebDriver无法找到浏览器可见区域中不可见的元素.
为了使WebDri可以通过WebDriver查看,我们需要在浏览器的视图中使该元素可见,以向下滚动特定的div!
如何在我的网页的特定区域执行操作(向下滚动并单击).我尝试了很多,没有帮助我.
请帮我解决我的问题.
Jun*_* Gu 10
首先,这里发布的大部分答案都不在主题之内.我现在一直在使用selenium 2和selenium 3,webdriver可以处理窗口滚动以使元素可见.
对于每个人发布片段,如:
driver.execute_script('scrollBy(0, 250)')
Run Code Online (Sandbox Code Playgroud)
你根本得不到问题!
实际上我仍然没有找到一种方法来正确模拟滚动手柄的拖动动作,但这个答案似乎很有希望 - 但我没试过.
所以到目前为止,我个人有两种方法可以做到这一点:
Keys.ARROW_DOWNKeys.PAGE_DOWN实际上有第三种方式,只要放弃硒,如果他们提供任何API,请联系网站.
import org.openqa.selenium.JavascriptExecutor;
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(0, 250)"); //y value '250' can be altered
Run Code Online (Sandbox Code Playgroud)
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(250, 0)"); //x value '250' can be altered
Run Code Online (Sandbox Code Playgroud)
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight));");
Run Code Online (Sandbox Code Playgroud)
要么
Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL).sendKeys(Keys.END).perform();
Run Code Online (Sandbox Code Playgroud)
for (int second = 0;; second++) {
if(second >=60){
break;
}
((JavascriptExecutor) driver).executeScript("window.scrollBy(0,400)", ""); //y value '400' can be altered
Thread.sleep(3000);
}
Run Code Online (Sandbox Code Playgroud)
要么
JavascriptExecutor jse = (JavascriptExecutor)driver;
for (int second = 0;; second++) {
if(second >=60){
break;
}
jse.executeScript("window.scrollBy(0,800)", ""); //y value '800' can be altered
Thread.sleep(3000);
}
Run Code Online (Sandbox Code Playgroud)
Point hoverItem =driver.findElement(By.xpath("Value")).getLocation();
((JavascriptExecutor)driver).executeScript("return window.title;");
Thread.sleep(6000);
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+(hoverItem.getY())+");");
// Adjust your page view by making changes right over here (hoverItem.getY()-400)
Run Code Online (Sandbox Code Playgroud)
要么
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(By.xpath("Value')]")));
Run Code Online (Sandbox Code Playgroud)
要么
WebElement element = driver.findElement(By.xpath("Value"));
Coordinates coordinate = ((Locatable)element).getCoordinates();
coordinate.onPage();
coordinate.inViewPort();
Run Code Online (Sandbox Code Playgroud)
最简单的方法是执行Javascript以向上/向下滚动元素.
JavascriptExecutor jsExec = (JavascriptExecutor) driver;
jsExec.executeScript("document.getElementById('id').scrollDown += 100");
Run Code Online (Sandbox Code Playgroud)
driver.get("http://www.***.com/");
driver.manage().window().maximize();
WebElement scroll = driver.findElement(By.id("someId"));
scroll.sendKeys(Keys.PAGE_DOWN);
Run Code Online (Sandbox Code Playgroud)
首先,您应该滚动而不是查找元素,如下所示:
document.getElementById("your div id").scrollTop(250);
Run Code Online (Sandbox Code Playgroud)
经过上面的操作你就可以找到那个特定的div了。
您还可以尝试以下操作:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("javascript:window.scrollBy(250,350)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73799 次 |
| 最近记录: |