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 ответа

Решение

В PythonBy.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):
Другие вопросы по тегам