我正在尝试用Selenium WebDriver、Java、Junit和Cucumber BDD来自动化一个航空公司的web应用程序。我能够创建一个简单的场景,比如选择一个带有出发日期的单程航班,然后选择一个座位,然后继续到付款页面。我能够写出所有的测试步骤,直到到达付款页面。Selenium成功地对所有页面中的所有元素执行了操作,但对支付页面中的任何元素执行了操作,却不成功。我尝试了隐式wait和显式wait,但没有使用。最初,当我运行一次测试时,Selenium能够在支付页面上执行操作,当我尝试再次运行它多次时,但由于“nosuchelementException”,测试失败。在“付款”页面中查找的一些元素如下:
Select choice = new Select(driver.findElement(By.xpath("//select[contains(@id,'title')]")));
choice.selectByVisibleText("Mr");
driver.findElement(By.xpath("//div[contains(@class,'payment-passenger-first-name')]"))/input)).sendKeys("John");
我使用的隐含wait是:
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
我使用的明确wait是:
WebElement element = new WebDriverWait(driver,20).until(ExpectedConditions.presenceOfElementLocated(By.xpath("elementlocation")));
Selenium没有在支付页面上找到任何元素,不仅仅是上面的元素。我不知道到底是什么问题。有人能给我提供解决这个问题的最佳方案吗?
如果元素是在iframe标记中写入的,那么selenium将不会找到元素,直到您切换到frame。切换帧的命令(driver.switchTo().frame(Framename))
有一个页面带有一些HTML: 并且我想通过文本查找元素到LI中。如果我试图用XPath找到它: null [contains(text(),'text1\r\ntext2')]/accentor::li“ 没有建立任何元素。我尝试在xpath前面使用@,如:“@[contains(text(),'text1\r\ntext2')]/accentor::li” 但也没有结果。我应该找到整个文本的元素
我对在Selenium中使用python还很陌生。
在端口20436上启动ChromeDriver(V2.9.248315)线程“main”org.openqa.selenium.noSuchelementException异常:没有这样的元素 (会话信息:chrome=53.0.2785.143)(驱动程序信息:ChromeDriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)(警告:服务器没有
我尝试了这些方法,甚至放置等待,但仍然没有找到元素:
基于文本的HTML: