Selenium findElement(By by)在Python中的等价物

时间:2017-04-11 13:27:30

标签: java python selenium selenium-webdriver

使用Selenium(Python),我们如何将By locater = By.id("username") WebElement elem = driver.findElement(locater) elem.SendKeys("tester") 对象传递给findElement()?

Java (这可行)

locater = By.id("username")
elem = driver.find_element(locater)
elem.send_keys("tester")

Python (此操作失败)

'str' object is not callable

我在python中遇到的错误是Newtonsoft.json。 我在其他SO对话中看了这个,因为python期望类似By.ID或By.XPATH等。

我需要一种传递By对象的方法并且想知道它是可能的。提前谢谢。

3 个答案:

答案 0 :(得分: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个参数:byvalue。两者都是strings

答案 1 :(得分:1)

我相信这应该有效。试一试

xpath = oSignUp.listformfieldxpaths[0]
elem = oDriver.getdriver().find_element(By.XPATH, xpath)
elem.send_keys("tester")

答案 2 :(得分:0)

$ cat f
label1 name
1
label2 id
2
label3 id
0
label4 id

label5 id
10
$ awk '/label/ {k=$0;getline tmp;if(tmp > 0) {print k,tmp}}' f
label1 name 1
label2 id 2
label5 id 10

 web_element=driver.find_element(By.ID,'id_value')

find_element有两个参数,第一个是定位器策略,第二个是定位器值。

方法签名

web_element=driver.find_element('id','id_value')