Selenium webdriver没有选择用户名输入元素

时间:2017-10-07 15:32:47

标签: selenium selenium-webdriver webdriver selenium-chromedriver

www.academia.srmuniv.ac.in是该网站。我使用Python 2.7编写脚本,并在Chrome上执行它。我希望从页面中选择“电子邮件地址”输入元素。我已经尝试了所有的选择器,但它似乎没有工作。说它无法找到元素。

我的配置不是问题,因为我可以在其他网站上选择元素。但在这个网站上,我无法选择电子邮件地址输入,密码输入和登录按钮。

他们是否能够阻止此类行为?请帮忙。

3 个答案:

答案 0 :(得分:0)

在与表单中的元素交互之前,您需要切换到多个iframe元素:

driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@urltype="zc_cpLoginUrl"]'))
driver.switch_to.frame('zohoiam')

答案 1 :(得分:0)

Email Address字段位于 iframe 内, name 属性为 zohoiam < / strong>再次位于 iframe 内, urltype 属性设置为 zc_cpLoginUrl 。因此,我们必须在2 iframes 内进行切换,以便与 Email Address 字段进行互动,如下所示:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://academia.srmuniv.ac.in/login.jsp')
frame = driver.find_element_by_xpath("//iframe[@urltype='zc_cpLoginUrl']")
driver.switch_to_frame(frame)
WebDriverWait(driver, 10).until(
    EC.frame_to_be_available_and_switch_to_it((By.NAME, "zohoiam"))
    )
driver.find_element_by_xpath("//input[@id='Email']").send_keys("debanjan")

答案 2 :(得分:0)

System.setProperty("webdriver.gecko.driver", "./drivers/geckodriver.exe");
      WebDriver driver=new FirefoxDriver();
      driver.get("https://academia.srmuniv.ac.in/");
      driver.manage().window().maximize();
      driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
      WebElement ele = driver.findElement(By.xpath("//iframe[@iscustomerportal='true']"));
      driver.switchTo().frame(ele);
      Thread.sleep(3000);
      WebElement ele1 = driver.findElement(By.xpath("//iframe[@frameborder='0']"));
      driver.switchTo().frame(ele1);
      Thread.sleep(3000);
      driver.findElement(By.xpath("//input[@id='Email']")).sendKeys("StackOverflow@mail.in");
      String s= driver.findElement(By.xpath("//input[@id='Email']")).getText();
      System.out.println(s);
      driver.findElement(By.xpath("//input[@id='Password']")).sendKeys("hello");
      Thread.sleep(3000);
      driver.findElement(By.xpath("//input[@class='btn']")).click();