我试图点击“Бренд”链接,但它没有用。我做错了什么?
driver.findElement(By.xpath("//div[@class='filter-title' and text()='Бренд']")).getText() -works
driver.findElement(By.xpath("//div[@class='filter-title' and text()='Бренд']")).getText() - doesn't work. Why?
答案 0 :(得分:1)
使用WebElement.getText()
的行很可能会有效,但WebElement.click()
行不会按以下方式工作:
driver.findElement(By.xpath("//div[@class='filter-title' and text()='Бренд']")).getText() //works
driver.findElement(By.xpath("//div[@class='filter-title' and text()='Бренд']")).click() //doesn't work.
此行为的原因是当客户端(即 Web浏览器)将控件返回到 WebDriver 实例时'document.readyState'等于“完成”,目标 WebElement 很可能存在 < em>(元素存在,但并不一定意味着元素可以相互作用)和可见即(元素是可见的,高度和宽度也大于0 )。所以你能够提取文字Бренд。
但 WebElement 存在且可见但不会认为 WebElement 也可点击即可互动。
您可以在此处找到有关'document.readyState' equal to "complete"
的详细讨论要点击 WebElement ,文字为Бренд,您必须按如下方式诱导 WebDriverWait :
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='filter-title' and text()='Бренд']"))).click();
答案 1 :(得分:0)
如果我能够从您的图像中正确提取信息,那么该类已经是唯一标识符。您可以使用driver.findElement(By.className("brand")).click();
。
如果二级品牌&#34;品牌&#34;不在其他任何地方使用。如果这不起作用,那么只需要包含它的div的类:
driver.findElement(By.className("initialDivClass")).findElement(By.className("brand")).click();