点击主菜单下列出的每个链接,我需要帮助。我能够使用list方法列出它们。现在我想点击列出的链接,如果他们打开一个新窗口,请获取URL标题并导航回当前URL。再次列出下一个链接并单击。 我尝试了以下代码,但它对我不起作用:
WebDriver driver = new FirefoxDriver();
driver.navigate().to(myurl);
WebElement element = driver.findElement(By.linkText(mylinkText));
element.click();
System.out.println(element.getText());
WebElement elements = driver.findElement(By.linkText(mylinkText2));
String text123 =elements.getText();
List<WebElement> linkElements = driver.findElements(By.tagName(mytagname));
String[] linkTexts = new String[linkElements.size()];
int i =0;
for (WebElement e : linkElements) {
linkTexts[i] = e.getText();
System.out.println("sub menus listed under mylinkText" + linkTexts[i]);
WebElement tag = driver.findElement(By.tagName(mytagname2));
Thread.sleep(1000);
tag.click();
// driver.navigate().to(linkTexts[i]);
Thread.sleep(1000);
System.out.println(driver.getCurrentUrl());
driver.navigate().back();
Thread.sleep(1000);
if(linkTexts[i].equals(text123)){
break;
}i++;
答案 0 :(得分:0)
如果我们想要自动化以下网站菜单 - http://www.telerik.com/
您可以使用以下代码执行所需的操作。
[TestClass]
public class MenuLinkTests
{
public IWebDriver Driver { get; set; }
public WebDriverWait Wait { get; set; }
[TestInitialize]
public void SetupTest()
{
this.Driver = new FirefoxDriver();
this.Wait = new WebDriverWait(this.Driver, TimeSpan.FromSeconds(30));
}
[TestCleanup]
public void TeardownTest()
{
this.Driver.Quit();
}
[TestMethod]
public void ClickEveryHrefMenu()
{
this.Driver.Navigate().GoToUrl(@"http://www.telerik.com/");
// get the menu div
var menuList = this.Driver.FindElement(By.Id("GeneralContent_T73A12E0A142_Col01"));
// get all links from the menu div
var menuHrefs = menuList.FindElements(By.ClassName("Bar-menu-link"));
// Now start clicking and navigating back
foreach (var currentHref in menuHrefs)
{
this.Driver.Navigate().GoToUrl(@"http://www.telerik.com/");
currentHref.Click();
string currentElementHref = currentHref.GetAttribute("href");
Assert.IsTrue(this.Driver.Url.Contains(currentElementHref));
// Now the same will happen for the next href
}
}
}
代码在C#中,但在Java中几乎相同。
答案 1 :(得分:0)
主要想法是找到某个div内的所有链接
所以你需要像这样使用一些xpath:
datasource
并使用一些循环点击它们:
override func viewDidLoad() {
super.viewDidLoad()
// do this for all your tableViews and make sure to have an outlet configured first
tableView.delegate = self
tableView.datasource = self
addSerial("FCGPR0TUG07P", status: "Shipped", issues: 6, reworks: 2, index: 0, flagged: false)
}
但是如果你点击 - 它会刷新页面。所以你需要在新标签页中打开链接,如下所示:
var menuHrefs = menuList.FindElements(By.Xpath(".//div[@id='idOfTheDivWithLinks']/*/a"));