1

该页面的代码如下:

<td align="center" width="50%">

<input type="button" id="M_860735" value="Continue" class="entereclass" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(244, 244, 244); width: 100px; visibility: hidden; background-position: initial initial; background-repeat: initial initial; " onclick="this.disabled= true; this.value='Loading...'; M_3275409(1);"><br>

<input type="button" id="M_1723091" value="Continue" class="enterclass" style="background: #F4F4F4; width: 100px; margin-top: 3px; visibility: hidden;" onclick=" this.disabled= true; this.value='Loading...'; M_3275409(2);">
</td>

<td align="center" width="50%">

<input type="button" id="M_2802510" value="Continue" class="enterclass" style="background: #F4F4F4; width: 100px; visibility: hidden;" onclick="this.disabled= true; this.value='Loading...'; M_3275409(3);"><br>

<input type="button" id="M_1860441" value="Continue" class="enterclass" style="background-image: initial; background-attachment: initial; background-origin:n initial; background-clip: initial; background-color: rgb(244, 244, 244); width: 100px; margin-top: 3px; visibility: visible; background-position: initial initial; background-repeat: initial initial; " onclick="this.disabled= true; this.value='Loading...'; M_3275409(4);">
</td>

我希望能够获取每个元素并将四个 ID 存储在临时变量中,以便在每次尝试单击时使用。(按钮的 ID 是随机生成的,它们的类循环通过三个不同的选择 ["enterclass"、"forward" 和 "inputsubmit"])

我要做的就是浏览每个课程并在登录时单击按钮:

try{ driver.findElement(By.ByClassName.ByClass("enterclass")).click(); } catch {exception e {}

然后将“enterclass”更改为其他选项,然后粘贴。

但我不能在这里这样做,因为它们都是一样的。

也许不是每次都获取 ID,我可以让程序识别出有四个,然后尝试单击每个?(同样,也不知道该怎么做,哈哈)

我还是 Java 新手,所以我不太清楚最熟练的方法来做这些事情。

如果有人可以帮助我,将不胜感激。^_^

谢谢!〜莫里亚的本·金

更新:失败......我想通了。:P

我已经做了:

 try{ 
     driver.findElement(By.xpath("/html/body/div/div/table/tbody/tr/td[2]/div[2]/center/table[13]/tbody/tr[3]/td/table/tbody/tr/td/input")).click();
     } catch(Exception e){}
     try{ 
     driver.findElement(By.xpath("/html/body/div/div/table/tbody/tr/td[2]/div[2]/center/table[13]/tbody/tr[3]/td/table/tbody/tr/td/input[2]")).click();
     } catch(Exception e){}
     try{ 
     driver.findElement(By.xpath("/html/body/div/div/table/tbody/tr/td[2]/div[2]/center/table[13]/tbody/tr[3]/td/table/tbody/tr/td[2]/input")).click();
     } catch(Exception e){}
     try{ 
     driver.findElement(By.xpath("/html/body/div/div/table/tbody/tr/td[2]/div[2]/center/table[13]/tbody/tr[3]/td/table/tbody/tr/td[2]/input[2]")).click();
     } catch(Exception e){}
4

1 回答 1

2

那是一个很长的xpath。我建议改为使用“FindElements”而不是“findElement”来获取页面上的所有“输入”元素,然后通过访问它们的 id 等来过滤这些元素。例如。

elements = driver.findElements(By.xpath("/input");
foreach(IWebElement e in elements)
{
    sting class = elements[0].getAttribute("class");
    if (class == "whatever")
        ;//do your stuff! :)
}

在 xpath 之外看起来非常长,这是非常难以维护的。如果页面上的 UI 有细微的变化,您的 xpath 很容易变得不正确。恕我直言,最好获取页面元素的子集,然后在逻辑上筛选它们。但是,如果它有效,它就有效!:)

于 2012-05-12T01:43:29.720 回答