Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x pythonselenium3.x隐式和显式等待不处理前两个文本字段元素,而部分处理第三个文本字段元素_Python 3.x_Selenium_Selenium Webdriver - Fatal编程技术网

Python 3.x pythonselenium3.x隐式和显式等待不处理前两个文本字段元素,而部分处理第三个文本字段元素

Python 3.x pythonselenium3.x隐式和显式等待不处理前两个文本字段元素,而部分处理第三个文本字段元素,python-3.x,selenium,selenium-webdriver,Python 3.x,Selenium,Selenium Webdriver,我尝试实现显式等待text field元素,有几个条件,但仍然无法向这些字段添加字符,它很可能跳过first name和last name字段,有时还跳过一些字符。代码如下: from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.suppor

我尝试实现显式等待text field元素,有几个条件,但仍然无法向这些字段添加字符,它很可能跳过first name和last name字段,有时还跳过一些字符。代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()

driver.get("http://tutorialsninja.com/demo/")
driver.find_element(By.XPATH, "//a[@title='My Account']").click()
driver.find_element(By.LINK_TEXT, "Register").click()

wait = WebDriverWait(driver,10)
#wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='firstname']")))
wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "input[name='firstname']")))

#driver does not sends any characters to these fields and does not raise any error/excpetion that 
#means element is located and sending the characters to these fields but the same not reflecting in fields

driver.find_element(By.CSS_SELECTOR, "input[name='firstname']").send_keys("first name")
driver.find_element(By.CSS_SELECTOR, "input[name='lastname']").send_keys("last name")

#driver send keys to these element, sometime partial characters to email id field

driver.find_element(By.CSS_SELECTOR, "input[name='email']").send_keys("email@gmail.com")
driver.find_element(By.CSS_SELECTOR, "input[name='telephone']").send_keys("9898989898")
driver.find_element(By.CSS_SELECTOR, "input[name='password']").send_keys("password")
driver.find_element(By.CSS_SELECTOR, "input[name='confirm']").send_keys("password")
-->


使用time.sleep1,就在first name文本字段按预期工作之前,我只是想知道如何使用synchronizationimplicit或explicit wait处理此问题。

您可以使用webdriver wait等待其余部分

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input[name='firstname']"))).send_keys("first name")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input[name='lastname']"))).send_keys("last name")

这本应该奏效的

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='firstname']")))
条件所有元素的存在将不起作用,因为您只有一个元素
如果所定位的元素的可见性不起作用,请使用元素使其处于可点击状态。

刚刚尝试过,仍然不起作用。奇怪的是,它在我的上起作用。那么你的定位器很可能是错的。更新您的问题。请添加html代码。输入的[name='firstname']定位器是否唯一?人们希望您接受您的问题解决后的答案
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='firstname']")))