package FlipPkg;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BigBasket {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver","C:\\Users\\NP031997\\Downloads\\geckodriver-v0.12.0-win64\\geckodriver.exe");
WebDriver big = new FirefoxDriver();
big.get("https://www.google.com/");
big.manage().window().maximize();
System.out.println("The webpage is:" + big.getTitle());
big.findElement(By.xpath(".//*[@id='gs_htif0']")).sendKeys("Big Basket");
big.findElement(By.xpath(".//*[@id='gs_htif0']")).sendKeys(Keys.ENTER);
big.findElement(By.xpath("//*[@id='rso']/div[1]/div/div/h3/a")).click();
System.out.println("The current webpage is:" + big.getTitle());
}
}
代码在位置失败
big.findElement(By.xpath("//*[@id='rso']/div[1]/div/div/h3/a")).click();
答案 0 :(得分:0)
您的代码很好.WebDriver肯定会找到该元素,但您在该代码中遇到一个小问题。 NoSuchElementException可能有两个原因:
解决方法如下:
您必须在“输入”功能后使用等待。
您可以使用waits或waitForPageToLoad()函数。以下代码适用于WebDriverWait。
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<script>
var svg = d3.select('body')
.append('svg')
.attr('width',600)
.attr('height',500);
svg.append('circle')
.attr('class', 'apple')
.attr('r', 200)
.attr('cx', 200)
.attr('cy', 250)
.style('fill', 'black');
svg.append('circle')
.attr('class', 'orange')
.attr('r', 200)
.attr('cx', 400)
.attr('cy', 250)
.style('fill', 'black');
var t = d3.transition()
.duration(7000)
.ease(d3.easeLinear)
.tween("attr.fill", function() {
var apple = d3.selectAll(".apple"),
orange = d3.selectAll(".orange"),
i1 = d3.interpolateRgb(apple.style("fill"), "red"),
i2 = d3.interpolateRgb(orange.style("fill"), "orange");
return function(t) {
apple.style("fill", i1(t));
orange.style("fill", i2(t));
};
});
</script>
</body>
</html>
您可以使用它来点击
元素WebDriverWait wait = new WebDriverWait(big,120);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='rso']/div[1]/div/div/h3/a"));
您还可以使用Contains()函数来查找元素的XPath:
WebDriverWait wait = new WebDriverWait(big, 15);
wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Big Basket")));
通过使用第二和第三种方法,您将获得一个元素列表,因为许多元素包含Text Big Basket。