我正在运行Selenium来测试我公司网页的特定区域。在理论上我想做的事情似乎相对容易,但我遇到了几个障碍。有人可以告诉我为什么URL正在打开但是没有选择"服务"超链接?
以下是代码片段:
System.setProperty("webdriver.ie.driver","Path to IE/IEDriverServer_64.exe");
WebDriver driver = new InternetExplorerDriver();
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
driver.get("https://www.ups.com/us/en/Home.page");
driver.manage().window().maximize();
driver.findElement(By.xpath(".//*/div[@id='ups-header']/nav[@id='ups-navItems']/ul[@class='ups-navItems_primary']/li[@class='ups-navMenu ups-menu'][3]/a[@id='ups-menuLinks2']")).click();
正如我之前所说,理论上应该打开UPS的主页并选择"服务"页面右上角的标签。相反,它只是去UPS.com主页并留在那里。
我有driver.findElement(By.xpath ........);在这个例子中,但我尝试了findElement(By.name& partialLinkText
除了更新到最新版本之外,还有人可以给我一个解决方案吗?
元数据: Windows 10, JAVA 10, Internet Explorer(不幸的)11.4。
提前致谢!
使用其他HTML结构进行编辑:
这是我正在使用的HTML的一部分。此HTML属于我想在自动化中单击的服务链接:
<a role="button" href="#" class="ups-analytics ups-menu_toggle" data-
content-block-id="M1" data-event-id="22" aria-expanded="false" id="ups-
menuLinks2" aria-controls="ups-menuPanel2">Services<span class="ups-mobnav-
arrow" aria-hidden="true"></span></a><div class="ups-menu_list ups-cols-3"
aria-hidden="true" role="region" id="ups-menuPanel2" aria-labelledby="ups-
menuLinks2">
<h2 class="ups-med_show">Services</h2>
<div class="ups-menu_listCols">
答案 0 :(得分:1)
Internet Explorer v11 不会在我的系统上打开 url ,而是使用 Selenium v3.12.0 , ChromeDriver 2.39 和 Chrome v67.0 以下解决方案点击了带有文字的元素服务 justo完美:
代码块:
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.addArguments("disable-infobars");
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.ups.com/us/en/Home.page");
driver.findElement(By.linkText("Services")).click();
浏览器快照:
答案 1 :(得分:0)
对于IE来说这很棘手,由于某些原因我试过的所有xpath似乎都行不通。这可能是由于需要添加一些capabitlites。我没有详细研究它,但它在Firefox中为我工作:
String baseURL = "https://www.ups.com/us/en/Home.page";
WebDriver driver;
System.setProperty("webdriver.gecko.driver", "//path to//geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get(baseURL);
Thread.sleep(3000);
WebElement service=driver.findElement(By.xpath("/html/body/div[1]/div[1]/div/div/div/div/header/div/nav/ul[1]/li[3]"));
System.out.println(service.getText());
service.click();
如果您的Firefox出现问题。请分享堆栈跟踪,以便我们提供帮助。此代码完全适用于Firefox