当前位置: 首页 > 知识库问答 >
问题:

无法使用selenium webDrive-单击内联元素

储法
2023-03-14

在此输入图像描述无法使用selenium webdriver单击内联元素。

这是URLhttps://www.google.com/.

除了图像链接(右侧顶部),还有一个方形图标。需要单击该图标并选择“地图”。附上截图。我使用了xpath、cssselector、ID、Name,但没有任何效果。谁能帮我一下吗。

代码

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class webelements2 {
    public static void main(String[] args) throws InterruptedException 
    {
        System.setProperty("webdriver.gecko.driver","C:\\Users\\rpremala003\\Downloads\\geckodriver-v0.14.0-win64\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.google.com/");
        driver.manage().window().maximize();
        driver.findElement(By.id("gbwa")).click();
        driver.findElement(By.className("gb_3")).click();               
    }       
}

共有3个答案

姜献
2023-03-14

我已经测试了下面的代码,它可以工作。

driver.get("https://www.google.com");
driver.findElement(By.cssSelector("a[title='Google apps']")).click();
new WebDriverWait(driver, 3).until(ExpectedConditions.elementToBeClickable(By.id("gb8"))).click();

您基本上需要单击应用程序图标,等待地图图标可单击,然后单击它。

我假设你不在谷歌工作,那么在这种情况下,为什么要测试用户界面?您可以直接导航到https://maps.google.com并跳过UI点击。

陈高寒
2023-03-14

需要为控件添加一些动态等待。此外,我注意到,如果谷歌没有设置为您的主页,那么您会看到一条消息“经常来这里?让谷歌成为你的主页。'。需要处理此消息,否则将无法访问应用程序图标。

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class webelements2 {
    public static void main(String[] args) throws InterruptedException 
    {
        System.setProperty("webdriver.gecko.driver","C:\\Users\\rpremala003\\Downloads\\geckodriver-v0.14.0-win64\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.google.com/");
        driver.manage().window().maximize();
        WebDriverWait wait = new WebDriverWait(driver, 10);
        if (driver.findElements(By.xpath("//a[@title='No thanks']")).size() !=0) {
            wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@title='No thanks']"))));
            driver.findElement(By.xpath("//a[@title='No thanks']")).click();
        }

        driver.findElement(By.xpath("//div[@id='gb']//div[@id='gbwa']/div/a[@title='Google apps' and @role='button']")).click();

        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//a[@id='gb8']/span[text()='Maps']"))));
        driver.findElement(By.xpath("//a[@id='gb8']/span[text()='Maps']")).click();               
    }       
}

如果您有进一步的疑问,请尝试此代码并让我知道。

郑曜灿
2023-03-14

这段代码在Firefox中不起作用,因为当您单击元素-By时,它会打开产品页面。id(“gbwa”)。但如果你在Chrome上尝试同样的方法,效果会很好。您唯一需要更改的是。类名称(“gb_3”)带有By。xpath(“//ul[@class='gb\u ka gb\u da']/li[3]”

WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.manage().window().maximize();
driver.findElement(By.id("gbwa")).click();
driver.findElement(By.xpath("//ul[@class='gb_ka gb_da']/li[3]")).click();

对于Firefox,您可以修改代码,以便在打开产品页面时,您可以从那里单击地图选项。

 类似资料:
  • 问题内容: 我正在使用Selenium和Java,无法单击模式内的元素。场景是这样的:单击框架内的项目后,它会打开一个模态,我需要单击此模态内的一个元素,但我无法获取它。 我已经尝试过: 我也尝试过使用switchTo()这样: 这是我的模态的HTML: 这是从firefox开发工具获取的CSS路径: 永远找不到对象。 问题1:如果元素在模态内部必须进行不同的管理? 问题2:如何最后单击按钮 sa

  • 问题内容: 我正在使用Selenium和Java,无法单击模式内的元素。场景是这样的:单击框架内的项目后,它会打开一个模态,我需要单击此模态内的一个元素,但我无法获取它。 我已经尝试过: 我也尝试过使用switchTo(): 这是我的模态的HTML: 这是从firefox开发工具获取的CSS路径: 永远找不到该对象。 问题1:是否必须对模态中的元素进行不同的管理? 问题2:如何最后单击按钮 sav

  • 我试图点击一个按钮,它出现在图的右侧(图上方的三行),最后想点击“下载为CSV”。我的代码如下。 File=WebDriverWait(驱动程序,20).until(ec.element_to_be_clickable((by.xpath,'//*[@id=“HighCharts-3SLSA4F-0”]/div[2]/ul/li[6]')).click()#下载为csv 错误:引发TimeoutE

  • 我正在尝试使用selenium WebDriver实现应用程序的自动化。我经常遇到click action在WebElements上不起作用的情况。 例如,在html块中,类似于: 我已经试着把这件事做了差不多一个星期了。谁能帮帮我吗? 代码似乎确实改变了单击时的图像(我比较了单击前后的图像源)。但是没有可见的“onclick()”调用(我不确定是否有其他方法在click上调用java脚本函数,如

  • 在我们的应用程序中,当我将鼠标放在菜单项上时,将出现下拉菜单项。在这里我想通过点击它来选择一个项目。主菜单:管理子菜单:管理频道,管理用户在selenium webdriver中,我尝试通过给出xpath,linktext,partial link文本直接点击管理频道。

  • 我们已经更新到最新的Selenium版本3.141.59并且发现点击不起作用。我没有得到一个错误消息,表明单击失败,并移动到下一个函数或行。我已经验证了它在Chrome、Firefox和Edge上不起作用。我们的代码是用Java编写的。 在单击元素之前添加等待时间 操作 JavaScriptExecutor 如有任何帮助,我们将不胜感激!