我已经分享了下面的代码,请让我知道更正
import org.openqa.selenium.By;
import org.openqa.selenium.ie.InternetExplorerDriver;
public class MyClass {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
/*System.setProperty("webdriver.ie.driver","D:\\Backup\\Documents\\Automation\\drivers\\IEDriverServer.exe");
InternetExplorerDriver driver = new InternetExplorerDriver();
driver.get("https://www.google.com");
WebDriverWait driverWait = new WebDriverWait(driver,50);
driverWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='lst-ib']"))).click();
driver.findElementByXPath("//*[@id='lst-ib']").sendKeys("Make My Trip");
driver.findElementById("_fZl").click();
driverWait.until(ExpectedConditions.elementToBeClickable(By.linkText("MakeMyTrip, India's No 1 Travel Site | Book Hotels, Flights, Holiday ..."))).click();
Screenshot S1 = new Screenshot();
S1.Takescreen();*/
String username = null;
String password = null;
MyClass C1 = new MyClass();
C1.URLs(username, password);
}
public void URLs (String username, String password) throws InterruptedException
{
System.setProperty("webdriver.ie.driver","D:\\Backup\\Documents\\Automation\\drivers\\IEDriverServer.exe");
InternetExplorerDriver driver = new InternetExplorerDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://google.com");
driver.findElement(By.className("lst lst-tbb sbibps")).sendKeys("irctc");
driver.findElement(By.id("_fZl")).click();
Thread.sleep(10000);
driver.findElement(By.linkText("IRCTC Next Generation eTicketing System")).click();
username = driver.findElement(By.id("usernameId")).getTagName();
password = driver.findElement(By.className("loginPassword")).getTagName();
System.out.println(username);
System.out.println(password);
}
}
错误:
线程“main”org . open QA . selenium . nosuchelementexception中出现异常:无法找到类名= = lst lst-TBB SBI PPS的元素(警告:服务器未提供任何stacktrace信息)命令持续时间或超时:10.45秒
在Google.com,通常有三个输入标签可用于搜索,但是其中两个具有hidden =true属性
<div id="gs_sc0" class="gsfi" style="background: transparent none repeat scroll 0% 0%; color: transparent; padding: 0px; position: absolute; z-index: 2; white-space: pre; visibility: hidden;"/>
<input id="gs_taif0" class="gsfi" disabled="" autocomplete="off" aria-**hidden="true"** style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; position: absolute; z-index: 1; background-color: transparent; color: silver; left: 0px; visibility: hidden;" dir="ltr"/>
<input id="gs_htif0" class="gsfi" disabled="" autocomplete="off" aria-hidden="true" style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; position: absolute; z-index: 1; background-color: transparent; color: silver; transition: all 0.218s ease 0s; opacity: 0; text-align: left; left: 0px;" dir="ltr"/>
所以我们必须使用不隐藏的输入,在这种情况下使用
driver.findElement(By.id("lst-ib")).sendKeys("irctc");
实际上
,这是3个不同的类。要使用所有这些,您可以使用css选择器
driver.findElement(By.cssSelector(".lst.lst-tbb.sbibps")).sendKeys("irctc");
使用<code>className
driver.findElement(By.className("lst")).sendKeys("irctc");
// or
driver.findElement(By.className("lst-tbb")).sendKeys("irctc");
// or
river.findElement(By.className("sbibps")).sendKeys("irctc");
正如@Guy所指出的,您尝试访问3个不同的类,因此不能对所有类使用By.className方法。
我认为Guy有正确的方法,但只有当您的用例与Guy所理解的完全一样时,它才有效
lst
、lst-tbb
或sbibps
ORlst
、lst-tbb
或sbibps
ORsbibps
类的元素,它是lst-tbb
的子类,它是lst
的子类(即.lst.lst-tbb.sbibps
)driver.findElements(由.css选择器(“.lst、.lst tbb、.sbibps”)
driver.findElementsBy.xpath ("//*[@类]"));
或者这个,如果你不知道它是否有更多的类
driver.findElements(By.xpath(“//*[包含(@class, 'lst lst-tbb sbibps')]])”);
driver.findElements(通过.cssSelector(.lst.lst tbb.sbibps))
注意力!我使用了
findElements
方法,而不是 findElement
方法,它会产生一个列表并且不会引发异常,而是在不满足条件时列表为空。
另外:参见需要通过css查找selenium中的元素以供参考
问题内容: 我有以下代码从给定列表中选择一个选项,它通常可以正常工作,但有时会失败,并在第二个if上出现NoSuchElement异常。我的印象是,如果找不到元素,它将再次回到循环中。我相信解释很简单……有人能启发我吗? 问题答案: 好吧,我是Java专家,所以我将不提供代码,而是提供算法: 您的代码(我认为)应该检查是否显示了该元素,如果没有显示,请再等待2,5秒 失败的原因是,有时显示元素需要
我看过很多关于如何使用硒的示例脚本 switch_to.window 这是一个关于我所学的示例脚本,根本不起作用: 我得到了错误消息: InvalidArgumentException:预期“handle”为字符串,但得到了[object Undefined]未定义 很明显,我也厌倦了同样结果的普通网页。 有人有同样的问题吗?
问题内容: 我已经在“ userInfo”类中实现了Serializable。我仍然感到异常。这是输出控制台- 这是我的两节课: 问题答案: 为什么我实现了’Serializable’却得到NotSerializableException异常 你还没有 java.io.NotSerializableException:chatservernazmus.User公共类userInfo实现了Seria
问题内容: 我有一个简单的方法,可将命令打印到屏幕上,扫描用户的输入,然后将其作为字符串返回。如果用户输入无效,它将通知用户并再次询问。该方法运行完美,但是我的讲师提到我们应该始终关闭资源,因此我回过头来添加了close方法,现在无论用户输入什么,每次调用该方法时都会收到NoSuchElementException。这是代码… 例外总是指向用户输入以scan.nextLine()。trim()开头
问题内容: 我已经找到了这段代码,无法找出解决方法。在运行代码时,为什么不提示用户输入而不是Java确定没有输入?错误跟踪如下。 这是错误- 问题答案: 简单的答案是当您关闭扫描仪时- 基础输入流也会关闭:http : //docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#close() 要修复此问题,请在主菜单中创建一次:
我使用的是SPARK-SQL-2.4.1、SPARK-Cassandra-Connector2.11-2.4.1和java8以及apache Cassandra3.0版本。 我有如下所示的spark-submit或spark集群环境,可以加载20亿条记录。 当我检查日志时,我看到警告com.datastax.spark.connector.writer.QueryExecutor-BusyPool