我在另一个div的div内有一个div。最外面的div类别是“ Big Div”,里面有一个div类别为“ Medium Div”,最里面的div类别是“ Small Div”。
当我按下F12键并将鼠标悬停在元素上时,我可以看到div的类,但是我无法使用Selenium找到它们。
我在做什么错了?
WebElement big = browser.findElement(By.cssSelector("//div[contains(@class,'Big')]"));
WebElement medium = big.findElement(By.cssSelector("//div[contains(@class,'Medium')"));
WebElement small = medium.findElement(By.cssSelector("//div[contains(@class,'Small'"));
注意:我的班级包含空格,Selenium找不到任何div,但我得到了例外:“没有这样的元素”。
答案 0 :(得分:2)
我想在@KunduK的答案中添加几行
WebElement small = browser.findElement(new ByChained(By.xpath("//div[contains(@class,'Big')]"),By.xpath("//div[contains(@class,'Medium')]"),By.xpath("//div[contains(@class,'Small')]")));
您可以从以下链接获取更多详细信息:
How Selenium's ByChained class really works?
https://www.linkedin.com/pulse/selenium-classes-stabilize-ui-automation-code-durga-behera/
答案 1 :(得分:1)
您使用的语法不适用于cssSelector
,而不适用于XPATH
,并且您也错过了括号。
立即尝试遵循xpath。
WebElement big = browser.findElement(By.xpath("//div[contains(@class,'Big')]"));
WebElement medium = big.findElement(By.xpath(".//div[contains(@class,'Medium')]"));
WebElement small = medium.findElement(By.xpath(".//div[contains(@class,'Small')]"));
但是您可以一次完成。
WebElement small = browser.findElement(By.xpath("//div[contains(@class,'Big')]//div[contains(@class,'Medium')]//div[contains(@class,'Small')]"));
答案 2 :(得分:1)
在放置括号和所使用的定位符类型时存在语法错误。 尝试以下代码,
WebElement big = browser.findElement(By.xpath("//div[contains(@class,'Big')]"));
WebElement medium = big.findElement(By.xpath("//div[contains(@class,'Medium')]"));
WebElement small = medium.findElement(By.xpath("//div[contains(@class,'Small')]"));
答案 3 :(得分:0)
定位器中缺少括号:
WebElement big = browser.findElement(By.cssSelector("div[class*='Big']"));
WebElement medium = big.findElement(By.cssSelector("div[class*='Medium']"));
WebElement small = medium.findElement(By.cssSelector("div[class*='Small')]"));