能够获取网页元素的文本,但无法单击它

问题描述 投票:0回答:1

页面包含一个输入框,带有一个带有“+”的侧按钮。我可以清除输入框,向其中发送一些文本,然后当我可以获得“+”按钮的网络元素引用时,但是看在上帝的份上,我无法使用下面的任何方式单击它‘Selenium v4.0’,就像普通的 Web 元素 click(),或 Actions 类甚至 JavaScriptExecutor。另外值得注意的是我使用流畅等待100秒。请参阅下面我使用的代码花絮和屏幕图片。

 1. waitingDriver = new WebDriverWait(driver,Duration.ofSeconds(100)); 
    WebElement someBtn=waitingDriver.until((ExpectedConditions.elementToBeClickable(by)));
    someBtn.click();// would not able to click
    System.out.println("btnClickBy, Text="+someBtn.getText());// returns text as '+'

 2. JavascriptExecutor executor = (JavascriptExecutor) driver;
    executor.executeScript("arguments[0].click();", someBtn);// would not able to click

 3. Actions actions = new Actions(driver);
    actions.moveToElement(someBtn).click().perform();// would not able to click

源代码看起来像这样......

webdriver click action selenium4 javascriptexecutor
1个回答
0
投票

在发帖后,我观察到在大多数情况下,运行时无法仅执行输入框旁边的一个按钮单击。我可以检索按钮上的文本,但无法单击它。

所以,在用多种方式编写 Selenium 定位器之后,我终于使用了 JavaScript 执行器接口,它确实有效!因此,一旦跨过该障碍,剩下的就是以带有条件 ExpectedConditions 子句的流畅等待的形式保留更多的等待时间。所有元素都可以轻松访问,甚至没有问题。

学到的教训:当您测试由基于javaScript的库组成的网站时,请尝试使用ExpectedConditions进行条件流畅等待,最后不要忘记为您的点击操作使用JavaScript执行器接口。

© www.soinside.com 2019 - 2024. All rights reserved.