我有一个ID为" a:2:3:d:"的td元素,当我想通过id选择它时,我的webdriver找不到它。有没有办法按ID的一部分进行搜索,因为我认为问题终于出现了问题:"在标识符中。
答案 0 :(得分:2)
首先,您需要确认这确实是问题,并且不仅仅是页面未完全加载,还是异步加载。我没有看到为什么Selenium应该关注尾随“:”的任何特殊原因。
更新:从评论中,动态ID更有可能是问题,但解决方案是相同的:
要按部分ID查找元素,可以使用xpath。如果您尝试按部分ID找到div
,例如:
//div[contains(@id, 'a:2:3')]
你没有说你正在使用什么语言,但在python中,这将使用如下:
driver.find_element_by_xpath("//div[contains(@id, 'a:2:3')]")
和Java:
driver.findElement(By.xpath("//div[contains(@id, 'a:2:3')]"))
答案 1 :(得分:0)
假设您使用的是Java
WebElement el = driver.findElement(By.cssSelector("td[id*='a:2:3']"));
上面的代码得到了TD的元素,它以:2:3开头,因为我们在css选择器中使用*。
XPath更强大,有时难以理解。 CSS Selector很简单。