gpt4 book ai didi

java - 由于某种原因,Selenium 为两个字段而不是一个字段创建了 sendKeys

转载 作者:行者123 更新时间:2023-12-02 02:22:45 25 4
gpt4 key购买 nike

我做了一个非常简单的 Selenium 测试,我想打开网页,清除字段值,开始为此字段输入文本,从提示下拉列表中选择第一个值。

网站是aviasales.com(我刚刚发现了一些有很多控件的网站,这不是广告)

我做到了

DriverFactory.getDriver().findElement(By.id("flights-origin-prepop-whitelabel_en")).clear();

它工作得很好,我还通过控制台检查了这是页面上唯一的一个对象,例如:

document.getElementById('flights-origin-prepop-whitelabel_en')

因此,在下一行中我将发送值:

DriverFactory.getDriver().findElement(By.id("flights-origin-prepop-whitelabel_en")).sendKeys("LAX");

但由于某种原因它发送了“flights-origin-prepop-whitelabel_en”和“flights-destination-prepop-whitelabel_en”的LAX值,然后我尝试了

DriverFactory.getDriver().findElement(By.id("//input[@id='flights-destination-prepop-whitelabel_en'][@placeholder='Destination']")).sendKeys(destinationAirport);

但我得到了相同的结果: enter image description here

可能是什么原因以及如何解决这个问题?谢谢!

最佳答案

是的...那里发生了一些奇怪的行为。由于我不明白的原因,该网站正在将第一个字段中输入的所有内容复制到第二个字段中。我放弃了尝试理解它并找到了解决它的方法。

每当我编写我知道要重用的代码时,我都会将它们放入函数中。这是脚本代码

driver.navigate().to(url);
setOrigin("LAX");
setDestination("DFW");

...并且由于您可能会重复使用这些支持功能。

public static void setOrigin(String origin)
{
WebElement e = driver.findElement(By.id("flights-origin-prepop-whitelabel_en"));
e.click();
e.clear();
e.sendKeys(origin);
e.sendKeys(Keys.TAB);
}

public static void setDestination(String dest)
{
WebElement e = driver.findElement(By.id("flights-destination-prepop-whitelabel_en"));
e.click();
e.clear();
e.sendKeys(dest);
e.sendKeys(Keys.TAB);
}

您可以看到这些功能,但基本上我单击该字段,清除文本(因为通常已经有一些内容),发送文本,然后按移出该字段并选择默认值(第一个选择) .

关于java - 由于某种原因,Selenium 为两个字段而不是一个字段创建了 sendKeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48272588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com