selenium - 如何使用 Selenium Webdriver 简化以下代码?
问题描述
<div class="col autocomplete theme-standard pin-left" data-control="autocomplete" data-auto-pos="true">
<label class="text autocomplete-arrow icon-before" id="FH-origin-label">
<span class="label">Leaving from</span>
<span class="visuallyhidden">City or airport</span>
<input type="text" name="FrAirport" data-canonic="origin" id="FH-origin" data-minchar="3" data-provide="autocomplete" data-template="#uitk-autocomplete-default" data-theme="autocomplete" data-closetext="Close" data-continuetext="Continue typing to refine search" data-lob="PACKAGES" data-mask="95" data-version="v4" data-locale="en_US" data-forceicon="flights" data-autoselect="touch" data-selectioncallback="publishingWizardPackageTypeAheadOriginCallback" placeholder="City or airport" xpath="1">
<span class="icon icon-location" aria-hidden="true"></span>
</label>
<div class="autocomplete-dropdown"></div>
</div>
我正在尝试使用 chrome webdriver 使用 while 循环选择以下网站上的“离开”部分之一:https://alaskatrips.poweredbygps.com/g/pt/hotels?MDPCID=ALASKA-US.TPS.BRAND。酒店.HOTEL
我试过下面的代码:
package dropdowns;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class synchronization {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\everybody\\Desktop\\selenium\\library\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://alaskatrips.poweredbygps.com/g/pt/hotels?MDPCID=ALASKA-US.TPS.BRAND.hotels.HOTEL");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
WebElement a = driver.findElement(By.id("FH-origin"));
a.sendKeys("NEW");
while (!a.equals("New Haven, CT (HVN-All Airports)")) {
//Thread.sleep(4000);
driver.findElement(By.id("FH-origin")).sendKeys(Keys.ARROW_DOWN);
driver.findElement(By.id("FH-origin")).sendKeys(Keys.ENTER);
}
解决方案
这是你要找的吗?
while (!a.getText().equals("New Haven, CT (HVN-All Airports)")) {
Thread.sleep(4000); //what is the need of this Thread sleep?
driver.findElement(By.id("FH-origin")).sendKeys(Keys.ARROW_DOWN);
}
driver.findElement(By.id("FH-origin")).sendKeys(Keys.ENTER);
我只是根据我的假设修复了你的代码
发布 HTML 将帮助其他 SO 用户找到您问题的答案
推荐阅读
- ios - AudioKit .nearestQuantizedPosition 缺少节拍?
- javascript - 从 v6.8 升级到 v7.4.2 后,Redux Form 为每个 Field 元素调用 MapStateToProps
- security - Redis 安全性:远程连接到绑定到 Localhost 的 Redis 服务器
- python - 在循环中的指定索引处将字符串插入二维数组
- json - 如何将 json 数据返回到反应状态?
- docker - 用于创建容器的 docker sdk
- node.js - GroupBy 和存储并重复
- java - 导出后 URL 不应包含 Servlet 名称
- regex - 正则表达式模式在双引号内的 key-par 中捕获值
- sql - 将多行汇总为 SQL Server 数据的单行和列