selenium - 如何在 selenium webdriver 中使用 xpath 单击元素?(通常它适用于我,但不适用于这个特定的 url)

标签 selenium xpath webdriver

我正在尝试单击 Website-link 中的输入字段使用 xpath通常它适用于所有网址。但对于这个特定的网址,无论我尝试什么,我都无法使用 selenium webdriver 点击输入字段.

Webdriver 加载页面但不会点击元素。
这是我迄今为止尝试过的:(它是一个使用 Selenium webdriver 进行自动化测试的 java 项目)

System.setProperty("webdriver.gecko.driver", "C:\\Users\\nimal\\eclipse-workspace\\webdriver\\chromedriver.exe") ;
      WebDriver driver = new ChromeDriver();
       driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
       driver.get("https://www.kayak.com/flights");

       WebElement searchfield1 =  driver.findElement(By.xpath("//*[@id='c5NwV-origin-airport-display']")); 
       searchfield1.click();
       WebElement searchfield2 =  driver.findElement(By.xpath("//*[@id='c5NwV-origin-airport']")); 
       searchfield2.sendKeys("Toronto");

我尝试先点击div element使用 xpath ,因为那时只有我得到输入字段。
然后尝试使用 xpath 将“Toronto”发送到输入字段.

非常欢迎任何帮助或建议。

最佳答案

在这里,id 正在动态更改。因此,您需要使用其他 unqiue 引用来查找元素,并且您需要更改 searchfield1 的 Xpath 定位器如//div[@class='search-form-inner']//div[@data-placeholder='From?' ]
searchfield2可以使用 name 属性找到元素。您需要在发送 key 之前执行明确的操作。因为,一些数据已预先填充在源字段中

作为最佳实践,在加载 URL 后添加一些等待以完成页面加载。

工作代码:

driver.get("https://www.kayak.com/flights");

WebDriverWait wait=new WebDriverWait(driver,20);
wait.until(ExpectedConditions.titleContains("Flights"));

WebElement searchfield1 =  driver.findElement(By.xpath("//div[@class='search-form-inner']//div[@data-placeholder='From?']"));
searchfield1.click();

wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("origin")));

WebElement searchfield2 =  driver.findElement(By.name("origin"));
searchfield2.clear();
searchfield2.sendKeys("Toronto");

关于selenium - 如何在 selenium webdriver 中使用 xpath 单击元素?(通常它适用于我,但不适用于这个特定的 url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51771767/

相关文章:

java - Python Selenium - 一个 session 浏览器

java - 使用 Selenium Java 从 HTML 中获取字符串文本

python - 如何使用 Python 抓取特定字段(如下面的 HTML 代码所示)?

仅当源属性存在时,XSLT 才向节点添加属性

css - 将谓词应用于xpath中的字符串为何有效?

c# - javascript .click() 在 Chrome 驱动程序中不起作用

selenium - Selenese html 到底是什么?

java - 尝试了解 Selenium 及其各种成分

java - 使用 Chrome 浏览器的 RemoteDriver 在下拉菜单上失败

java - Selenium WebDriver - 单击“保存”按钮后应用程序变得无响应