我找到了一个类似的主题here并按照示例进行了操作,但解决方案似乎无效。
我正在尝试使用找到的here文档双击元素。
我有以下代码:
@article_zone = "nbviewer-zone-overlay-13B27E79C7BC32F1"
指定@driver.action.double_click("id=" + @article_zone).perform
然后我有下一行代码:
Error: TypeError: expected Selenium::WebDriver::Element, got "id=nbviewer-zone-overlay-13B27E79C7BC32F1":String
但这一行引发了以下错误:
id=nbviewer-zone-overlay-13B27E79C7BC32F1
元素//Nav Items
$navItems = array(
array(
slug => "index.php",
title => "Home"
),
array(
slug => "cruise-partners.php",
title => "Cruise Partners"
),
array(
slug => "destinations.php",
title => "Destinations"
),
array(
slug => "cruise-deals.php",
title => "Cruise Deals"
),
array(
slug => "cruise-type.php",
title => "Cruise Type"
),
array(
slug => "river-cruise.php",
title => "River Cruise"
),
array(
slug => "luxury.php",
title => "Luxury"
),
array(
slug => "contact.php",
title => "Contacts"
)
);
?>
是我试图双击的内容。我不知道为什么我收到这个错误。
非常感谢任何帮助。谢谢你的期待!
答案 0 :(得分:0)
执行此操作时:
@driver.action.double_click("id=" + @article_zone).perform
您在+
的实例上调用String
方法。这将尝试将@article_zone
隐式转换为字符串并将其附加到"id="
。然后将该字符串传递给double_click
方法,该方法期望Selenium::WebDriver::Element
的实例。
我怀疑如果你删除"id=" +
,你就可以了:
@driver.action.double_click(@article_zone).perform
答案 1 :(得分:0)
问题是因为double_click
默认情况下会尝试点击元素的中间。当我检查元素时,它的中间隐藏在“折叠”下方。为了解决这个问题,我可以使用偏移(从左上角)移动到元素并执行双击:
@driver.action.move_to(@article, 10, 10).double_click.perform