java - 如何单击 Spicejet 网站中的 RoundTrip 单选按钮。它被选中,但几秒钟后,单向被选为默认值
问题描述
如何单击SpiceJet网站内的往返单选按钮。它被选中,但几秒钟后,单向被选为默认值
以下是 2020 年 11 月 11 日自动化 spicejet 网站的代码。即使我单击往返单选按钮,默认情况下单向单选按钮也会被选中。我该如何解决这个问题?
package practice;
import java.util.List;
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;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Spicejet {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\User\\Desktop\\selenium\\chromedriver_win32 (1)\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.spicejet.com/");
driver.manage().window().maximize();
driver.findElement(By.xpath("//input[@value='RoundTrip']")).click();
new WebDriverWait(driver, 20).until(ExpectedConditions
.visibilityOfElementLocated(By.xpath("//input[@id='ctl00_mainContent_ddl_originStation1_CTXT']")))
.click();
driver.findElement(By.xpath(
"//div[@id='glsctl00_mainContent_ddl_originStation1_CTNR']//table[@id='citydropdown']//li/a[@value='MAA']"))
.click();
driver.findElement(By.xpath(
"//div[@id='ctl00_mainContent_ddl_destinationStation1_CTNR']//table[@id='citydropdown']//li/a[@value='BLR']"))
.click();
driver.close();
}
}
解决方案
似乎SpiceJet web 应用程序需要更长的时间才能document.readyState
达到complete
.
因此,click()
在与文本Round Trip相关联的单选按钮上,您需要诱导WebDriverWait并且您可以使用以下任一Locator Strategies:elementToBeClickable()
cssSelector
:new WebDriverWait(driver, 30).until(webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete")); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("table.tblTrip input[value='RoundTrip']"))).click();
xpath
:new WebDriverWait(driver, 30).until(webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete")); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//table[@class='tblTrip']//input[@value='RoundTrip']"))).click();
浏览器快照:
参考
您可以在以下位置找到一些相关的详细讨论:
推荐阅读
- android-studio - 错误:任务“:app:transformClassesWithDexForDebug”执行失败。以非零退出值 3 结束
- jquery - 在第一个 div 周期后回调不动作
- linux - 上传/Arduino 出错:Ubuntu 16.04 上的权限被拒绝
- kubernetes - 在 lxc 容器中的 kubernetes 集群中创建 master 时出错
- php - 您是否应该将用户登录详细信息存储在与您的网站相同的数据库中?
- python - 生成器上的 for 循环第一次迭代
- common-lisp - 为什么在 case/ecase 中不能匹配 nil?
- javascript - 在 Node.js 中使用 Azure SendGrid 发送电子邮件
- timeout - 如何更改 Frameworkium 中的等待超时 - 全局
- android - 包 android.support.v4.view 不存在,即使添加了依赖项