1

我正在编写一个 java 程序来自动从网站下载 PDF。我的程序通读一个 excel 文件,并为 excel 文件中的每个帐号下载 PDF。在浏览器中,帐户是从菜单中选择的,但菜单的格式为#storenumber - accountnumber(例如#1234 - 987654321)。我无权访问商店编号。一个简单的解决方案是忽略前 x 个字符,但某些商店编号的长度不同,因此这不起作用。

java是否可以忽略 - 之前的所有字符,如果可以,您可以写出这个表达式。

我将它与 selenium 和 firefox webdriver 一起使用,这使得简单地分离和保存字符串变得更加困难。这意味着我在内存中没有字符串,它来自浏览器。

如果我有商店号码(但我没有),这就是我的代码的样子。

new Select(driver.findElement(By.id("ctl00_main_ddlAssocAccountNumbers"))).selectByVisibleText(storeNum + " - " + accountNum);

任何其他解决方案或建议表示赞赏。

谢谢,托比尔

4

1 回答 1

4

如果格式# storenumber - accountnumber是固定的,最好使用split()

accountNum = accountNum.split(" - ")[1];

编辑:根据您更新的帖子和评论,我认为您希望在使用不接受任何通配符或正则表达式
的 Selenium 方法时仅对用户帐号进行部分匹配selectByVisibleText()

但是,您可以通过以下方式通过使用以下方式进行子字符串匹配来实现此行为contains()

Select select = new Select(driver.findElement(
                    By.id("ctl00_main_ddlAssocAccountNumbers")));
List<WebElement> listOfOptions = select.getOptions();
for (WebElement option : listOfOptions) {
    String storeAndAcctNum = option.getText();
    if (storeAndAcctNum.contains(accountNum)) { // if sub-string matches
        select.selectByVisibleText(storeAndAcctNum); // fire select as usual
        break; // out of the loop
    }
}
于 2013-06-05T16:30:32.583 回答