Selenium findElement(By by) эквивалент в Python
Используя Selenium (Python), как мы передаем By
объект для findElement ()?
Java (это работает)
By locater = By.id("username")
WebElement elem = driver.findElement(locater)
elem.SendKeys("tester")
Python (это не удается)
locater = By.id("username")
elem = driver.find_element(locater)
elem.send_keys("tester")
Ошибка, которую я получаю в Python 'str' object is not callable
, Я искал это в других разговорах SO, и это потому, что python ожидает что-то вроде By.ID или By.XPATH и т. Д.
Мне нужен способ передать объект By и я подумал, что это возможно. Заранее спасибо.
3 ответа
Решение
В Python
By.XPATH
это не метод класса By()
, но строковая переменная:
By.XPATH == "xpath"
Попробуйте реализовать приведенный ниже код:
from selenium.webdriver.common.by import By
locator = (By.XPATH, oSignUp.listformfieldxpaths[0])
elem = oDriver.getdriver().find_element(*locator)
elem.send_keys("tester")
Обратите внимание, что find_element()
должен получить 2 аргумента: by
а также value
, Оба strings
Я считаю, что это должно работать. Дать ему шанс
xpath = oSignUp.listformfieldxpaths[0]
elem = oDriver.getdriver().find_element(By.XPATH, xpath)
elem.send_keys("tester")
web_element=driver.find_element(By.ID,'id_value')
или же
web_element=driver.find_element('id','id_value')
У find_element есть два параметра: первый - это стратегия локатора, а второй - значение локатора.
подпись метода
def find_element(self, by=By.ID, value=None):