gpt4 book ai didi

java - 正确的 XPath 但 sendKeys() 在 Selenium 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:54 24 4
gpt4 key购买 nike

我正在尝试将文本发送到 https://signup.live.com/ 上的密码字段,但是虽然所有其他字段均已正确填充(并且密码字段的 XPath 也正确 - .//*[@id='Password']),但数据并未显示在密码和密码确认字段中。

我有一种感觉,这与发送电子邮件/用户名后页面(某种程度上)刷新(它显示“此用户名可用”或“不可用”)有关,但这只会影响密码字段。

我不确定如何解决该问题,因为我使用的 XPath 是正确的..

有什么想法吗?

谢谢

附注

有些人说电子邮件验证导致了错误,这可能是正确的。但是,当我添加:

            driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

它似乎没有解决问题。有时有效,但大多数时候无效。

最佳答案

由于电子邮件验证而导致问题。一旦您发送电子邮件,网站就会进行验证,并且 selenium 会尝试同时发送密码,但找不到聚焦的元素并抛出异常,因此它无法聚焦于密码字段并抛出异常:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element

因此,在发送密码之前,您必须等待一段时间,直到电子邮件 ID 得到验证(分析验证电子邮件所需的时间),然后发送密码。这里Thread.sleep()将帮助您做到这一点。但有时不建议这样做,因为它会在给定时间暂停您的脚本,如果您的元素在给定时间之前难以处理。

另一个建议是,如果您有元素 id,则避免使用 xpath,您可以像 driver.findElement(By.id("Password")) 一样定位。

您的脚本示例代码可以是:

driver = new ChromeDriver();    
driver.manage().window().maximize();
driver.get("https://signup.live.com/");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("FirstName")).sendKeys("test");
driver.findElement(By.id("LastName")).sendKeys("user");
driver.findElement(By.id("MemberName")).sendKeys("testuser@gmail.com");
Thread.sleep(10000);
driver.findElement(By.id("Password")).sendKeys("testone1#");
driver.findElement(By.id("RetypePassword")).sendKeys("testone1#");

关于java - 正确的 XPath 但 sendKeys() 在 Selenium 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906583/

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