我是自动化测试的新手,我一直在努力解决这一问题。无论如何,我想去该网站并在页面上获得按钮列表。比我想打印页面上显示的按钮列表。
package com.practice;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Buttons {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Oderint dum metuant\\eclipse-workspace\\JAR FILES\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.toolsqa.com/automation-practice-switch-windows/");
List <WebElement> buttons = driver.findElements(By.tagName("button"));
for ( int i=0; i<buttons.size();i++){
WebElement button = buttons.get(i);
if(button.isEnabled()){
System.out.println(buttons);
}
}
}
}
这是我运行代码时得到的:
[[ChromeDriver:XP上的Chrome(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮] [[ChromeDriver:XP上的Chrome浏览器(fddbb691263a84a531368a18e6d495b3)]->标记名称:按钮]
答案 0 :(得分:0)
基本上有三件事
Thread.sleep(10000); // you can also use web driver's implicit and explicit wait or wait for page to load. This is just for example
List <WebElement> buttons = driver.findElements(By.tagName("button"));
for (int i=0; i<buttons.size();i++){
WebElement button = buttons.get(i);
try {
if(button.isDisplayed()){
System.out.println(button.getText()+" - is displayed");
}
else {
System.out.println(button.getText()+" - is present but not displayed");
}
} catch(NoSuchElementException e) {
System.out.println("Element is not present, hence not displayed as well");
}
}
isDisplayed
方法检查按钮的可见性。当元素不存在且不可见时,isDisplayed
将引发错误。因此,使用了try catch块来处理NoSuchElementException
异常。WebElements
对象,即按钮。使用按钮的获取文本方法,然后打印它。您可以看到哪个按钮可见或哪个按钮不可见。答案 1 :(得分:0)
回答。除去条件块,然后更改打印语句。请参阅下面的代码:
List <WebElement> buttons = driver.findElements(By.tagName("button"));
for ( int i=0; i<buttons.size();i++)
{
WebElement button = buttons.get(i);
System.out.println(button.getText());//It prints all the buttons name displayed on the page
}
2。如果要打印在页面上启用的按钮名称列表。
回答。保留if条件块,只需更改print语句。请参考以下代码:
List <WebElement> buttons = driver.findElements(By.tagName("button"));
for ( int i=0; i<buttons.size();i++)
{
WebElement button = buttons.get(i);
//System.out.println(button.getText()); //It prints all the buttons name displayed on the page
if(button.isEnabled())
{
System.out.println(button.getText()); //It prints all the buttons name which are enabled on the page
}
}