如何点击表selenium webdriver java里面的链接

时间:2015-05-18 19:14:05

标签: selenium

我试图点击第二个“doctype”下的表格行内的链接,但是当我使用xpath / title时,它看不到它只看到顶部而不是孩子。

WebElement divList = driver.findElement(By.xpath("/iframe/html/body/div[2]"));
divList.getSize();
System.out.println(">>>>??" + divList.getSize());

List<WebElement> allCreditCards = creditCardsList.findElements(By.xpath("//*[@id='" + x + "']/li"));
System.out.println("CardsAre: >" + allCreditCards.size());
 for (int i = 0; i <= allCreditCards.size(); i++) {
     int temp = i + 1;
     String creditcard = allCreditCards.get(i).getText();
     System.out.println(" i is = " + creditcard + " " + i);
     if (creditcard.equals()) {
         driver.findElement(By.xpath("//*[@id='" + x + "']/li[" + temp + "]/a")).click();
         break;

请参阅html页面的附图。

enter image description here

2 个答案:

答案 0 :(得分:2)

您可能错过了switchTo iframe部分。除非您提供您尝试过的代码,否则很难确切地知道出了什么问题。

//there is an `iframe` and you need to switchTo that `iframe`
driver.switchTo().frame(driver.findElement(By.id("EventSearchFrame")));

//the following css should find the a tag based on the partial title match
By byCss = By.cssSelector("th>a[title^='Attendee Type event']");
//wait for the element to load properly using explicit wait
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(byCss));

myDynamicElement.click();

当您在iframe内完成工作后,您需要将焦点切换回defaultContent(),以便Selenium知道您不在iframe

使用

driver.switchTo().defaultContent();
//continue

答案 1 :(得分:0)

两件事:

首先检查您使用的硒版本,以及您为驱动程序选择的浏览器。这是一个旧链接,但突出显示有时问题超出了您的控制范围,升级时最好:https://code.google.com/p/selenium/issues/detail?id=6111

其次,选择器通常用于在文档中进行搜索。当您在默认情况下查看iframe时,这是一个不同的文档。确保您的xpath能够首先找到iframe,然后找到文档。如果您需要更多帮助,请粘贴您的xpath。