我正在尝试使用Selenium(在Java中)在"People"
上的"Where"
和http://whitepages.com
字段中输入名称和邮政编码。
我已尝试分别使用.//*[@id='who']
和.//*[@id='where']
- 但每次运行程序时Selenium都会抛出错误。
我做错了什么?
答案 0 :(得分:1)
这里的关键问题是有多个元素id="who"
。使用CSS选择器在“搜索”表单中找到所需的选择器:
driver.findElement(By.cssSelector("div.callerid-skin #header form[role=search] #who"));
您可能还需要explicitly wait for the field to become visible:
WebDriverWait wait = new WebDriverWait(driver, 5);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.callerid-skin #header form[role=search] #who")));
答案 1 :(得分:0)
它有很多元素,id ='其中'其中有许多是隐藏的,这就是为什么它会为你抛出异常。尝试使用特定定位器
定位可见元素For People(@id =' who')使用以下定位器
By.cssSelector("#header[style] #who[data-gaaction*='people']")
For Where(@id =' where')使用以下定位器
By.cssSelector("#header[style] #where[data-gaaction*='business']")
答案 2 :(得分:0)
如果您使用的是Firebug,则有多种选择来获取元素路径: 1.检查元素(HTML选项卡应该是活动的) 2.右键单击元素(来自HTML源代码),您将看到多个选项: - 复制XPath - 复制最小XPath - 复制CSS路径
对于有问题的元素,您可以在Notepad ++中粘贴所有3个路径并进行一些实验。它可能会节省你一些时间,而不是从最上层的父节点开始,缩小到更短的路径。