0

自动化规范 - 基于 Java 的 WebDriver


,我正在开发一个 webdriver 自动化(Java 代码)来自动化巴士预订。
这是我的场景....

(1)give 出发和目的地 -完成
(2) 选择日期 -完成
(3)搜索巴士 -完成
(4)查看座位和选择 -我在这里打了

现在作为搜索结果,我得到了一个巴士列表,其中包含查看座位的选项。公共汽车列表显示在动态数据表中,其中每行包含一个名为“查看座位”的图像。单击viewseat-image将为我提供座位布局,我可以在其中选择座位。发现viewseat-images具有不同的ID相同的类名。现在我需要使用它的 id 找到并单击我想要的viewseat-image。
但情况是
* 数据表是动态的,所以 id 不断变化,这不允许我通过静态 id 来定位它。
* id 是该编码中唯一独特的东西,用于区分viewseat-image。所以只有当我得到正确的 id 时我才能找到它。

现在我的想法是,获取所有viewseat-images的运行时id,使用唯一的类名并存储在变量中,并使用id来定位元素。
因此,让我知道是否有可能使用类名获取该数据表中所有图像的 id。

4

4 回答 4

0
List<WebElement> elements = driver.findElements(By.className("classname"));    

for(WebElement ele : elements) {
    System.out.println(ele.getAttribute("id"));
} 
于 2013-11-07T12:41:11.517 回答
0

您可以使用绝对路径并获取座位的位置,这将减少您的工作量,要获取绝对路径您可以在firefox中安装一个名为“firepath”的插件,安装后您将可以选择AbsolutePath或RelativePath . 使用绝对路径,您无需使用 ID 来识别动态创建的元素。使用标签内元素的位置来标识路径。

绝对路径示例: //div/div/div/table/tbody/tr/td[2]/div/input[3]

于 2013-11-07T12:47:54.850 回答
0
driver.findElement(By.xpath("//a[text()='View seats']")).get(index).click()

您可以尝试这种方法。但我不确定它是否可以解决。我正在寻找一种可以解决动态页面问题的通用方法。

于 2013-12-16T02:10:43.057 回答
0

在这里,当动态数据表到来时,您可以将大小存储在表中,例如:

 int size = driver.findElements(By.xpath("//*[@id='demo_ID']/tbody/tr")).size();

并且可以设置一个循环来读取表格的每个可用行,或者您可以一一单击它们。喜欢 :

String strGetContent = text.getText();
or
text.click(); // As per your need 

现在您可以阅读或单击表格的每一行,尽管行是动态的。希望对您有所帮助!

有关更多解释或示例,我更喜欢:How to Automate a Dynamic page through Selenium Web Driver

于 2015-01-29T11:48:57.617 回答