提问人:KSK 提问时间:10/8/2017 更新时间:1/5/2019 访问量:4590
如何在 Chrome Web 驱动程序中获取自定义标签中的元素
how to get element inside custom tag in chrome web driver
问:
这是我的示例html代码。
<div class="content">
<M class="mclass">
<section id="sideA">
<div id="mainContent">
<div class="requestClass">
<span>Check</span>
<input type="text" id="box">
</div>
</div>
<section>
<section id="sideB">
...
<section>
</M>
</div>
我想为我的文本字段(“框”)设置一些值。所以我厌倦了像下面的代码一样设置
driver.findElement(By.xpath("...")).sendKeys("SetValue");
我的Xpath ID是正确的,它存在于页面中,但出现此错误
no such element: Unable to locate element: {"method":"xpath","selector":"id("..."}
为什么我因为我的自定义标签而收到此错误,如果是,如何获取自定义标签中的元素?
答:
0赞
amitbobade
10/8/2017
#1
如果您仍想使用 XPath。这对我有用——
driver.FindElement(By.XPath(@"//*[@id='box']")).SendKeys("AB");
我不认为自定义标签会导致任何问题,因为 CssSelector 也可以工作 -
driver.FindElement(By.CssSelector(@"m[class='mclass'] input")).SendKeys("AB");
0赞
iamsankalp89
10/8/2017
#2
您可以使用或找到它,我的建议您必须使用。此外,请使用 Explicit wait till 元素以使其可见。ID
xpath
ID
使用 ,您的代码如下所示:ID
WebElement elem= driver.findElement(By.id("box"));
WebDriverWait wait=new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(elem));
elem.sendKeys("test");
您还可以使用JavascriptExecutor
WebElement elem= driver.findElement(By.id("box"));
WebDriverWait wait=new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(elem));
JavascriptExecutor myExecutor = ((JavascriptExecutor) driver);
myExecutor.executeScript("arguments[0].value='test';", elem);
1赞
undetected Selenium
10/9/2017
#3
根据您提供的向文本字段填写一些值,您可以使用以下任一代码行:HTML
<input type="text" id="box">
cssSelector
:driver.findElement(By.cssSelector("section#sideA input#box")).sendKeys("SetValue");
xpath
:driver.findElement(By.xpath("//section[@id='sideA']//input[@id='box']")).sendKeys("SetValue");
评论
id
driver.findElement(By.id("box").sendKeys("SetValue");