Java selenium如何从google搜索结果中打开链接?

Java selenium如何从google搜索结果中打开链接?,java,selenium,selenium-webdriver,web,automation,Java,Selenium,Selenium Webdriver,Web,Automation,我不熟悉Selenium中的自动化测试,我正在做一些基本的自动化测试,比如在Google中搜索一些东西,然后单击搜索结果中需要的链接 下面的代码,我已经产生了工作,直到我得到了测试方法。我无法从谷歌搜索页面选择链接,但我的控制台上没有显示任何错误。因此,我在这一行上设置了一个线程,它提到它可以找到链接名,但是链接名在html代码中使用,正如我在Google inspect上检查的那样 我错过了什么明显的东西吗?我对Selenium比较陌生,因此非常感谢您的帮助。此外,我还尝试从该用户响应“”中镜

我不熟悉Selenium中的自动化测试,我正在做一些基本的自动化测试,比如在Google中搜索一些东西,然后单击搜索结果中需要的链接

下面的代码,我已经产生了工作,直到我得到了测试方法。我无法从谷歌搜索页面选择链接,但我的控制台上没有显示任何错误。因此,我在这一行上设置了一个线程,它提到它可以找到链接名,但是链接名在html代码中使用,正如我在Google inspect上检查的那样

我错过了什么明显的东西吗?我对Selenium比较陌生,因此非常感谢您的帮助。此外,我还尝试从该用户响应“”中镜像一些代码,但没有成功

谢谢

package com.demo.testcases;
导入org.openqa.selenium.By;
导入org.openqa.selenium.Keys;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.firefox.FirefoxDriver;
导入org.openqa.selenium.support.ui.ExpectedConditions;
导入org.openqa.selenium.support.ui.WebDriverWait;
公共类MyFirstTestScript{
私有静态WebDriver;
公共静态void main(字符串[]args){
设置();
测试();
}
//TODO自动生成的方法存根
@设置
公共静态无效设置(){
驱动程序=新的FirefoxDriver();
驱动程序。获取(“http://www.google.co.uk");
System.setProperty(“webdriver.gecko.driver”、“usr/local/bin/geckodriver”);
driver.findElement(By.name(“q”)).sendKeys(“BBC”+Keys.ENTER);
}   
@试验
公共静态无效测试(){
driver.findElement(By.partialLinkText(“BBC-Home”))。单击();
}
}

一旦您在谷歌主页
旁边的BBC文本中获得搜索结果,在包含文本BBC-Home的链接上单击()
,您可以使用以下代码块:

List <WebElement> my_list = driver.findElements(By.xpath("//div[@id='rso']//div[@class='rc']/h3[@class='r']/a"));
for (WebElement item:my_list)
{
    if(item.getAttribute("innerHTML").contains("BBC - Home"))
    item.click();
}
List my_List=driver.findElements(By.xpath(“//div[@id='rso']//div[@class='rc']/h3[@class='r']/a”);
对于(WebElement项:我的列表)
{
if(item.getAttribute(“innerHTML”).contains(“BBC-Home”))
项。单击();
}

您可以使用以下代码:

public class MyFirstTestScript {

private static WebDriver driver;
private static WebDriverWait wait;

public static void main (String[] args)  {

    SetUp();
    testing();
}

@setup
public static void SetUp () {
    System.setProperty("webdriver.gecko.driver", "usr/local/bin/geckodriver");
    driver = new FirefoxDriver();
    wait = new WebDriverWait(driver,50); 
    driver.manage().window().maximize();
    driver.get("http://www.google.co.uk");
    wait.until(ExpectedConditions.elementToBeClickable(By.name("q")));
    driver.findElement(By.name("q")).sendKeys("BBC" + Keys.ENTER);
} 


@Test
public static void testing(){
    wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.linkText("BBC - Homepage"))));
    driver.findElement(By.linkText("BBC - Homepage")).click();
}

这是另一种方法,但您可以将搜索请求构建到传递给driver.get的URL中。尝试使用By.linkText而不是PartialLinkText@camel-伙计,我一开始尝试过这种方法,但没有成功谢谢你的帮助,你测试过这段代码吗?我现在刚试过,但运气不好!我以前使用过这个“”方法,但是我没有使用x.path方法,而是使用了By.linktext方法,但它没有执行。我现在已经尝试了上面的代码,但仍然没有运气。谢谢你的回复。我刚刚试过这个代码,但仍然不起作用。你有没有测试过这段代码?它一直工作到搜索结果,但是它没有点击指定的链接。从控制台我得到这个错误“线程中的异常”main“org.openga.selenium.NoSuchElementException:找不到元素:BBC-Home“我尝试搜索谷歌而不是BBC,我得到了同样的错误,它找不到元素“Google”?BBC-home是在获得结果后弹出的第一个链接吗?可能是您的脚本需要向下滚动搜索页面