我需要根据同一行上的其他元素“SF Lead ID”找到元素“score”的文本。
“SF 线索 ID”可以是动态的。例如,我在这里使用硬编码值。
String sf_id = "00Q1l000003clVhEAI"; //this value is dynamic
String text= dvr.findElement(By.xpath("//*/tr/[contains(text(),'" + sf_id + "')]//*[@id='lead-score']")).getText();
请查看上图中的 html 结构。帮我纠正xpath。
目前它抛出以下错误 -
org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //*/tr/[contains(text(),'00Q1l000003cldHEAQ')]//*[@id='lead-score'] because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*/tr/[contains(text(),'00Q1l000003cldHEAQ')]//*[@id='lead-score']' is not a valid XPath expression.
(Session info: chrome=76.0.3809.132)
(Driver info: chromedriver=2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=Mac OS X 10.12.6 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/invalid_selector_exception.html
要提取score关于SF 线索 ID你必须诱导WebDriver等待为了visibilityOfElementLocated()
您可以使用以下任一方法定位策略:
-
Using cssSelector
and getText()
:
String sf_id = "00Q1l000003clVhEAI";
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("tr[data-sf-lead-id='" + sf_id + "'] td#lead-score"))).getText());
-
Using xpath
and getAttribute()
:
String sf_id = "00Q1l000003clVhEAI";
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//tr[@data-sf-lead-id='" + sf_id + "']//td[@id='lead-score']"))).getAttribute("innerHTML"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)