当前位置: 首页 > 知识库问答 >
问题:

让Selenium WebDriver在Google Maps Directions面板中向下滚动

司马念
2023-03-14

我可以用鼠标按住并向下拖动滚动条来构建一个动作。我不喜欢那个解决方案,因为如果页面的大小不同,或者面板的大小不同,执行这个动作会导致大量的重新计算。我更喜欢一个类似于Yahoo!的单一“文档”窗口的解决方案!或者谷歌代码。

如有任何帮助,将不胜感激。在过去的三天里,我一直在网上绞尽脑汁地寻找解决办法。

多谢了。

我不确定当我使用术语panel时是否使用了正确的术语。问题是显示网页时面板会动态生成滚动条。

driver.switchTo().frame(driver.findElement(By.id("spsizer")));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("javascript:window.scrollBy(250,750)", element);
driver.switchTo().defaultContent();

不幸的是,“Panel”不包含在框架中,或者是一个框架...由Selenium返回的异常标识:

 Exception in thread "main" org.openqa.selenium.NoSuchFrameException: Element is not a frame element: DIV

我相信我已经使用Firebug确定了panel有一个ID(“spsizer”)。

element = driver.findElement(By.id("spsizer"));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("javascript:window.scrollBy(250,750)", element);

共有1个答案

劳和歌
2023-03-14

我可以保存到我的地图链接与下面的屏幕快照给出的代码。

不需要有一个记录的步骤向下滚动面板,Selenium可以在网页中的任何web对象上定位和执行操作,而用户不可见。

守则详情:

单击链接保存到我的地图

第8行:命令-单击目标-//按钮[@id='srsave']

单击“保存”按钮

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace SeleniumTests
{
    public class GoogleMapSavingTest
    {
          static void Main(string[] args)
          {
              IWebDriver driver = new FirefoxDriver();
              driver.Navigate().GoToUrl("https://maps.google.com.au/");
              driver.FindElement(By.Id("d_launch")).Click();
              driver.FindElement(By.Id("d_d")).Clear();
              driver.FindElement(By.Id("d_d")).SendKeys("Franklin, ACT");
              driver.FindElement(By.Id("d_daddr")).Clear();
              driver.FindElement(By.Id("d_daddr")).SendKeys("Gungahlin, ACT");
              driver.FindElement(By.Id("d_d")).Click();
              driver.FindElement(By.Id("d_sub")).Click();
              for (int second = 0;; second++) 
              {
                    if (second >= 60) Assert.Fail("timeout");
                     try
                     {
                        if  (driver.FindElement(By.XPath("//div[@id='dir_sr']/a[@id='srlink']")).Displayed) break;
                    }
                    catch (Exception)
                    {}
                    Thread.Sleep(1000);
                }
             driver.FindElement(By.XPath("//div[@id='dir_sr']/a[@id='srlink']")).Click();
                driver.FindElement(By.Id("Email")).SendKeys("UserName");
                driver.FindElement(By.Id("Passwd")).SendKeys("Password");
                driver.FindElement(By.Id("signIn")).Click();
                for (int second = 0; ; second++)
                {
                    if (second >= 60) Assert.Fail("timeout");
                    try
                    {
                        if (driver.FindElement(By.XPath("//div[@id='dir_sr']/a[@id='srlink']")).Displayed) break;
                    }
                    catch (Exception)
                    { }
                    Thread.Sleep(1000);
                }
             driver.FindElement(By.XPath("//div[@id='dir_sr']/a[@id='srlink']")).Click();
            driver.FindElement(By.XPath("//button[@id='srsave']")).Click();


          }





}
 类似资料:
  • 我在Selenium 1(又名Selenium RC)中编写了以下代码,用于使用java滚动页面: Selenium 2(WebDriver)中的等效代码是什么?

  • 本文向大家介绍vim 向下滚动,包括了vim 向下滚动的使用技巧和注意事项,需要的朋友参考一下 示例 命令 描述 Ctrl+E 向下滚动一行。 Ctrl+D 向下滚动半屏(可使用该scroll选项配置)。 Ctrl+F 向下滚动全屏。 z+ 在窗口顶部的窗口下方绘制第一行。

  • 问题内容: 我已经在Selenium 1(又名Selenium RC)中编写了以下代码,以便使用Java进行页面滚动: Selenium 2(WebDriver)中的等效代码是什么? 问题答案: 对于向下滚动: 或者,您可以执行以下操作: 对于向上滚动:

  • 问题内容: 有人可以帮助我使用 Java* 使用 WebDriver 自动 向下滚动功能 吗? *** 就我而言,当我垂直向下滚动鼠标时,对于yahoo邮件就会显示( 可见 )。 问题答案: 您可以使用以下代码垂直向下滚动: 同样,也可以通过将y坐标更改为负值来向上滚动: 您还可以使用以下代码: 对于向下滚动: 向上滚动:

  • 我无法在使用appium的android设备上向下滚动移动页面。我试过驾驶。滚动到(元素),它不会向下滚动到指定的元素。我尝试过使用Actions类,但我遇到了一个错误,因为“方法尚未实现”。我尝试过使用Javascript的另一种方法,但也不起作用。有人提出建议。 以下是代码:

  • 我试图刮所有的链接可用在一个无限的页面,向下滚动,并获得新的链接可用。但是,time.sleep()不允许在一次又一次向下滚动之前暂停驱动程序一段合理的时间。 下面是我在“如何在Python中使用selenium webdriver滚动web页面”中使用的一个建议中使用的代码: 在20-30次迭代之后,由于time.sleep()与网页的刷新速度相比太低,代码会中断。