我正在尝试单击 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/