java Selenium WebDriver通过部分类名查找元素

uqzxnwby  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(154)

在我使用的框架中,我有以下元素:

<div class="x-grid3-cell-inner x-grid3-col-expRepCol">  New session from client IP 192.168.5.3 (ST=/CC=/C=) at VIP 192.168.5.2 Listener /Common/Tomcat (Reputation=Unknown)</div>

以及许多其他类似的元素。我试图通过部分名称文本定位此元素,并使用以下代码单击它:

String expectedText = "New session from client IP";
driver.findElement(By.className("div[class*='"+expectedText+"']")).click();

我也试过cssSelector:

String expectedText = "New session from client IP";
driver.findElement(By.cssSelector("div[class*='"+expectedText+"']")).click();

但是WebDriver一直抛出一个异常,说它无法找到那个元素。有什么建议吗?

9q78igpj

9q78igpj1#

<div class="dd algo algo-sr Sr" data-937="5d1abd07c5a33">
<div class="dd algo algo-sr fst Sr" data-0ab="5d1abd837d907">

上面的两个是雅虎搜索结果中的HTML元素。所以如果我们想用selenium python的一个部分类名来得到这些元素,这里有一个解决方案。

driver.find_element_by_css_selector("div[class^='dd algo algo-sr']")

以同样的方式,我们可以获得任何元素,这些元素在任何属性值上都有部分匹配,如类名,id等。
使用css选择器查找属性值部分匹配的元素:

ih99xse1

ih99xse12#

By.className正在查找具有输入名称的类。
By.cssSelector正在为您输入的选择器查找匹配项。
您尝试的是将div的文本与class进行匹配,但这不会起作用。
你可以试试这样的方法:

driver.findElement(By.xpath("//div[contains(text(),'"+expectedText+"')]")).click();
ffscu2ro

ffscu2ro3#

我相信这会起作用:

driver.findElement(By.className("x-grid3-cell-inner x-grid3-col-expRepCol").click();

相关问题