我正在使用硒3.4.0,并试图单击页面上的元素。在执行点击操作之前,我只是使用了Thread.sleep(12000)(最大等待时间),但是仍然抛出nosuchelement异常。我使用过其他浏览器,例如chomre --headless,但它的工作原理非常完美,并且同样适用于firefox和chorme UI浏览器。
代码:
WebDriver iDriver=new HtmlUnitDriver();
iDriver.get("https://www.xyz:8080/#!/test/createTest");
String title = iDriver.getTitle();
System.out.println(title);
iDriver.manage().window().setSize(new Dimension(1920, 1200));
Thread.sleep(13000);
org.testng.Assert.assertEquals("UI", title);
JavascriptExecutor executor = (JavascriptExecutor)iDriver;
executor.executeScript("arguments[0].click();", iDriver.findElement(By.xpath(".//span[@class='path']//a[contains(@href,'/testresource/createTestRequest')]")));
尝试了上述的Javascriptexecutor.click()和常规的click()方法,但均无法正常工作。
上面相同的脚本可以与其他浏览器完美配合。
例外:
org.openqa.selenium.NoSuchElementException: Unable to locate a node using //span[@class='path']//a[contains(@href,'/testresource/createTestRequest')]
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'L-MAA-25006133', ip: '10.229.101.11', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
Driver info: driver.version: HtmlUnitDriver
理想情况下,我只想在Google Cloud Platform中的linux框中执行以上脚本。而且我没有权限在那儿安装任何浏览器(例如,chrome,firefox二进制文件)来针对此类浏览器执行脚本。尝试使用chrome --headless选项,但仍在物理路径中查找Chrome二进制文件(/ usr / bin / chrome-browser)以在chromeoptions中进行设置。我们不能在那台机器上做到这一点。因此,我只是编写了脚本,无需指定任何浏览器二进制文件,并且该脚本将作为无头浏览器执行,而无需支持chrome或firefox二进制文件。
请给我您的想法。如果有更好的方法可以做到这一点,我也会尝试这样做。