我想使用Java中的Selenium从NCBI中提取一些数据
问题是xPath ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.TraceEnabled = true;
service.TraceFlags = TraceFlags.All;
service.Credentials = new WebCredentials("XXXX@YYY.COM", "XXXXXXXX");
service.AutodiscoverUrl("XXXXXX@YYYYY.com", RedirectionUrlValidationCallback);
EmailMessage email = new EmailMessage(service);
email.ToRecipients.Add("abc@yahoo.com");
email.Subject = "Testing from C#";
email.Body = new MessageBody("This is the first email I've sent by using the EWS Managed API");
email.Send();
可以在页面上获取每篇文章的标题并单击它们,它们适用于最后一页而不适用于第一页,我不明白为什么。
/html/body/div[2]/div[1]/form/div[1]/div[5]/div/div[5]/div[" + i + "]/div[2]/p/a
答案 0 :(得分:2)
我怀疑这是一个偏离一处的错误,因为XPath的索引从1开始,并且div[0]
在那里没有任何匹配项。
但是,通常,您的表达式非常脆弱,因为它是绝对表达式,其路径从HTML树的根部开始一直到每个父级都需要的元素。布局上的任何细微更改都会破坏它。
相反,我们可以认真简化表达式:
//div[contains(@class, 'rslt')]/p/a
这将匹配每页所有20个链接。
或者,如果您更喜欢简洁的CSS选择器:
driver.findElements(By.cssSelector(".rslt > p > a"));