是否有可能找到像按钮这样的元素并在它不断移动时单击它?例如转盘

时间:2014-02-11 13:27:07

标签: ruby selenium

我正在使用Selenium Webdriver(Ruby)来自动化我的网络应用程序,我的网络应用程序有这个轮播,其中我的元素不断地循环移动。 当我找到该元素并尝试单击它时,元素向前移动。因此我无法找到该元素。 我尝试通过以下代码查找并单击该移动元素:

    {
    ele_button = driver.find_element(:xpath,"xpath")
    sleep 10
    ele_button.click
    }

我认为通过'sleep 10'我可以让该元素等待10秒然后点击它。但这不起作用,每当我运行脚本时我都会收到ElementNotVisibleError。

问题:

甚至可以自动化移动元素吗?如果是,请为我提供解决方案。

3 个答案:

答案 0 :(得分:0)

是的,这绝对是可能的。我在我的网站上为旋转木马处理了相同的场景。有三种方式:

  • 大多数轮播在鼠标悬停时停止。所以你可以用它来阻止 旋转木马。使用Actions类移动到轮播。一旦它 停止你可以点击它。
  • 如果您想要特定的幻灯片,可以点击或任何其他导航器(例如prev / nxt)来访问幻灯片,然后点击它。
  • 单击特定幻灯片的确定镜头方式,无需担心是否显示它是使用Javascript单击它(我已经在我的情况下做了虽然我也实现了第二种方式,但我发现javascript是最简单的溶液)。

答案 1 :(得分:0)

为什么行动分裂?

我会推荐以下内容:

driver.find_element(:xpath,"xpath").click()

所以它会找到该对象并点击它。

答案 2 :(得分:0)

你可以做的另一件事,就是我们在selenium中使用java,根据你的按钮在一次旋转之后回来的时间放置 implicitlyWait ;现在在implicitlyWait

之后执行click
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// Suppose a rotation of button takes 30 sec

driver.findElement(By.xpath("/html/body/div[2]")).click();
// action performs on the element

ruby​​ 中,您必须使用此类语法

@driver.manage.timeouts.implicit_wait = 30