Selenium - click on Automatic Random Generated DIV/ID/LINK



我正试图在一个用于搜索最便宜航班的网站上使用Selenium进行漫游。我已经能够在整个搜索过程中进行磨合,但现在我被航班选择卡住了。我设法按公司名称订了机票。现在我需要点击两个第一个航班(出发,抵达)。

正如您在所附图片中看到的,网页生成了两个表。他们每个人都列出了一些航班。我需要点击每张表的第一张。

问题是生成的列表为不同的公司使用不同的DIV ID,并且ID具有随机数("_X",X是随机数)。

我只需要点击每个表上的DIV,任何一个comcolumn都可以。但所有列都使用相同的名称(在两个表上)。

使用selenium IDE现在可以工作,但只需要几个小时,因为航班、价格和小时都会不断更新,网页每次显示不同的结果,这意味着每次都有不同的ID。

有办法解决这个问题吗?

重要提示:我使用的是带有Selenium的JAVA。没有PERL,没有PYTHON或其他。

这将是现在使用JAVA的步骤:

// This orders the departure flight by company.
selenium.click("id=orden-compania-ida");
selenium.click("id=orden-compania-ida");
// This orders the arrival flights by company.
selenium.click("id=orden-compania-vuelta");
selenium.click("id=orden-compania-vuelta");
// This would click on the first link of first table
selenium.click("css=div.col-3 > label");
selenium.click("id=I_5");
// This would click on the first link of the second table
selenium.click("css=#TV_GDSAMADEUS_7 > div.col-3 > label");
selenium.click("id=V_12");

目前这是有效的,但在航班更新后,这将不再有效。有没有什么方法可以让硒一直点击每张桌子的第一个右边?

提前非常感谢。

链接到图像

在我看来,您应该尝试通过CSS选择器选择必要的div,而不是使用ID选择器。请仔细阅读下面的代码,弄清楚我的确切意思。

    // Open Firefox driver.
    WebDriver driver = new FirefoxDriver();
    // Send a get request.
    driver.get("http://google.com");
    // Typing a search query.
    WebElement searchField = driver.findElement(By.name("q"));
    searchField.sendKeys("Cheese!");
    // Waiting for the driver to change its title and load search results.
    new WebDriverWait(driver, 20).until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver d) {
            return d.getTitle().toLowerCase().contains("cheese");
        }
    });
    // Obtain dymamically loaded search results.
    List<WebElement> results = driver.findElements(By.cssSelector("h3.r"));
    // Go through the search results
    for (WebElement element : results) {
        // You can click instead of printing.
        System.out.println(element.getText());
    }
    // Close the driver.
    driver.close();

这是一个来自硒官方网站的编辑过的例子。

相关内容

  • 没有找到相关文章

最新更新