首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium无法通过xpath找到元素

Selenium无法通过xpath找到元素
EN

Stack Overflow用户
提问于 2013-06-27 19:18:25
回答 4查看 7.1K关注 0票数 3

我已经干了一段时间了。我使用Selenium和WebDriver版本2.33 (与所有浏览器)。我正在使用Java,这应该是任意的。我所做的只是简单地找到一个元素并悬停在它上面,这是我在前面的代码中所做的。但出于某种原因,我不能让这个开始工作。我试图用这个xpath获得一个元素,方法是在Chrome中右键单击HTML中的元素,然后单击"copy“:

代码语言:javascript
复制
//*[@id="highcharts-10"]/svg/g[7]/g/rect[1]

这就是我试图获得元素的方法(由于“Highkas-10”动态变化):

代码语言:javascript
复制
//*[starts-with(@id, 'highcharts')]/svg/g[7]/g/rect[" + barOption + "]

barOption的输入是正确的(我正在尝试通过一堆条子)

以下是我的Java代码:

代码语言:javascript
复制
WebDriverWait wait = new WebDriverWait(getWebDriver(), 5);
WebElement element;
WebDriver driver = getWebDriver();
By by = By.xpath("//*[starts-with(@id, 'highcharts')]/svg/g[7]/g/rect[" + barOption + "]");
Actions action = new Actions(driver);
WebElement elem = wait.until(ExpectedConditions.visibilityOfElementLocated(by));
action.moveToElement(elem);
action.perform();

我在这里做什么不对?我尝试过使用switchTo()语句,但是没有可以正确切换到的iframe。这是一张HTML的图片,因为我无法掌握实际文本:

更新的链接: zps6e2bc1b9.png

有人对我有什么建议吗?请让我知道我做错了什么!

谢谢!!

EN

回答 4

Stack Overflow用户

发布于 2013-06-27 19:35:03

尝试作为CSS Selectors

代码语言:javascript
复制
By by = By.css('div[id^="highcharts"] g[class^="highcharts"] > g > rec')

我使用了g.class_name,因为<g>标记类名不可见。用正确的类名替换该类名。

票数 2
EN

Stack Overflow用户

发布于 2013-08-08 19:40:24

我只想稍微介绍一下这方面的最新情况。selenium似乎看不到SVG标记,因此我需要找到一种方法来查看它们周围的情况,如果我能够找到方法的话,我会向您报告。

谢谢大家!

票数 1
EN

Stack Overflow用户

发布于 2013-06-29 18:43:18

从你和阿美的讨论中,我推断出你只有一个高度图。因此,尝试使用类名即By.ClassName(“High曲线图-跟踪器”)直接搜索元素“High图表-跟踪器”,然后悬停在元素本身上。这正是你想要达到的目标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17351473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档