Java & Selenium网页搜罗点击按钮不工作

3phpmpom  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(121)

"你们好“
我目前正在使用Java Selenium编写一个脚本,它将自动为我单击并填充类型。我编写了一行代码,但无法正常工作。我希望它单击一个按钮,但它不会这样做。当我运行应用程序时,机器人向下滚动到按钮但不点击按钮。当你点击按钮时,应该会打开一个新页面。我不知道我做错了什么,有人能帮我吗?谢谢你的回答!

我的密码:

public static void main(String[] args) {

    WebDriver driver = new FirefoxDriver();
    
    driver.manage().window().fullscreen();
    
    driver.get("https://deutsche-giganetz.de/");
    driver.findElement(By.xpath("/html/body/section/div/div[1]/div[2]/button[1]")).click();
    driver.findElement(By.xpath("/html/body/header/div/div/nav/div/div[1]/div[2]/ul/li[1]/a")).click();
    driver.findElement(By.xpath("/html/body/main/div[8]/div/section/div/div[1]/div[2]/div[3]/div[1]/div/div[5]/a")).click();
    
}

}

**我的错误代码:**功能{接受不安全证书:true,浏览器名称:火狐浏览器版本:108.0,moz:可访问性检查:假,moz:构建ID:20221208122842,型号:调试器地址:127.0.0.1:38233,版本:壁虎驱动程序版本:0.32.0,莫司:无头:错误,moz:平台版本:10.0,moz:进程ID:15732,莫桑比克:概况:C:\用户\确定~ 1\应用程序数据\L...,提示:关机超时:60000,`` mz:使用不符合规范的指针原点:false,moz:网络驱动程序单击:正确,moz:无窗口:假,页面加载策略:正常,平台名称:WINDOWS,代理:代理(),se:cdp:文件系统://127.0.0.1:38233/devtoo...,版本代码:cdp版本号:85.0,设置窗口矩形:true,strict文件交互性:假,超时:{隐式:0,页面加载:300000,脚本:30000},未处理提示行为:驳回并通知}

Element: [[FirefoxDriver: firefox on WINDOWS (dae2e314-a112-48de-ada9-bd6ffce54a94)]
-> xpath: `/html/body/main/div[8]/div/section/div/div[1]/div[2]/div[3]/div[1]/div/div[5]/a]
Session ID: dae2e314-a112-48de-ada9-bd6ffce54a94
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)

我试着用“findelementcss selector”代替“findelementxpath”,但是我不能通过链接来实现,因为有几个按钮叫做“Order Now”,我做了很多研究,但是没有找到其他的东西。

qzwqbdag

qzwqbdag1#

首先,您应该始终设置加载页面的超时,还建议检查javascript加载的结束,然后确定元素是否可单击,然后调用click方法

Duration pageLoadTimeout = Duration.ofMinutes(1);

WebDriver driver = new FirefoxDriver();

driver.manage().window().fullscreen();
driver.manage().timeouts().pageLoadTimeout(pageLoadTimeout);

driver.get("https://deutsche-giganetz.de/");
WebDriverWait wait = new WebDriverWait(driver, pageLoadTimeout);

// waiting for loading all page
wait.until(webDriver -> ((JavascriptExecutor) webDriver)
                .executeScript("return document.readyState")
                .equals("complete"));

// By.className alternative By.xpath (for example use "uk-button btn-white") 
WebElement button = driver.findElement(By.className("uk-button btn-white"));
wait.until(ExpectedConditions.elementToBeClickable(button));
button.click();

相关问题