如何在java中为selenium webdriver编写html文件以下代码

ykejflvf  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(150)

HTML:

<div id="Toolbar" style="color: rgb(35, 35, 34);">
    <ul class="dropdownMenu" style="display: none;"></ul>
    <div id="LeftToolbar" style="display: inline-block; width: 495px;">
        <ul class="dropdownMenu">
            <li>
                <div id="ScreenLayout" class="icon ScreenLayout group show" title="Screen Layout Selection">
                    <div id="ScreenLayoutIcon" class="icon show SCREEN1x1" title="Screen Layout 1x1" style="display: inline-block;"></div>
                    <div id="ScreenLayoutArrow" class="icon DROPDOWNARROW show" title="" style="display: inline-block;"></div>
                </div>
            </li>

我想使用Selenium + Java选择“ScreenLayoutIcon”。
我的代码:

driver.findElement(By.id("LeftToolbar"));
driver.findElement(By.xpath("//*@id='ScreenLayout']//ul")).click();
List<WebElement> options = driver.findElements(By.tagName("li"));
for (WebElement option : options) {
    if (option.getText().equals("Screen Layout")) {
        option.click();
    }
}
oiopk7p5

oiopk7p51#

有几个问题。
1.你的第一行代码什么也不做。

driver.findElement(By.id("LeftToolbar"));

你从页面中获取一个元素,但你不对它做任何事情,也不把它存储在一个变量中。
1.在第二行中,XPath不是有效的语法。

//*@id='ScreenLayout']//ul
   ^ you are missing an '['

应该是的

//*[@id='ScreenLayout']//ul

但是...根据您发布的HTML,DIV下没有ID为“ScreenLayout”的UL。
1.您的循环正在寻找包含文本“Screen Layout”的LI,但根据您发布的HTML,它们都没有。
我看到的对“ScreenLayoutIcon”的唯一引用是这个DIV的ID

<div id="ScreenLayoutIcon" class="icon show SCREEN1x1" title="Screen Layout 1x1" style="display: inline-block;"></div>

如果你的HTML是正确的(我怀疑它不是),这应该点击你所要求的元素。

driver.findElement(By.id("ScreenLayoutIcon"));

相关问题