<div class="block-inner">
<div class="form-group">
<label>Username</label>
<input type="text" name="username" class="required form-control" value="" placeholder="Enter your username...">
</div>
<div class="form-group w_margin">
<label>Password</label>
<input name="password" type="password" class="required form-control" style="" placeholder="Enter your password...">
</div>
</div>
我的需要是在网页中找到用户名并自动移动到下一个元素来填充值,一旦找到密码文本并且必须移动到下一个元素以填充字典中的密码。请帮帮我。
driver = webdriver.Chrome()
driver.get("https://account.genndi.com/login")
element = "//label[contains(text(),'')]" #xpath
dictCredentials = {'Username':'abcdef', 'Password':'123'}
for clas in driver.find_elements_by_xpath(element):
text = clas.text
if text in dictCredentials.keys():
inputbox = #please help here get corresponding input element
inputbox.send_keys(dictCredentials[text])
我知道如何将密钥直接发送到文本框中,这也很容易。但我希望了解如何使用另一个类元素间接执行相同的操作。
答案 0 :(得分:0)
为了达到这个目的,让我解释一下你将如何做到这一点。
首先,您需要获取Username元素。 你已经完成了这个:
element = driver.findElement(by.xpath("//label[contains(text(),'')]"));
您还可以做的是,直接获取父元素:
element = driver.findElement(by.xpath("//label[contains(text(),'Username')]/.."));
使用/..
,您将获得带有文字label
的元素Username
的祖先
现在您已找到输入所在的元素,您可以说:
inputElement = element.findElement(by.xpath("./input"));
这样,在您找到的父元素中,您将查找输入字段。
答案 1 :(得分:0)
根据 HTML ,您已共享以查找<label>
标记,文字为用户名和密码,然后移至要填充值的下一个元素,您可以创建一个函数,该函数将<label>
标记文本和text-to-send
作为两个参数接受,并填写下一个<input>
,如下所示:
def fillUp(labelText, inputValue):
driver.find_element_by_xpath("//label[.='" + labelText + "']//following::input[1]").send_keys(inputValue)
现在,您可以在脚本中的任何位置调用此函数,如下所示:
fillUp("Username", "Chandrasekar ")
fillUp("Password", "Subramanian")
答案 2 :(得分:0)
只需使用“by_name”locator =)
user = {"name": "Alex", "password": 'pass'}
driver.find_element_by_name("username").send_keys(user.name)
driver.find_element_by_name("password").send_keys(user.password)
如果你真的想在父元素中找到“用户名”文本 - 你几乎没有其他选择:
首先是找到包含特定文本的包装元素,并在其中搜索输入:
self.driver.find_element_by_xpath("//*[label[text()='Username']]/input").send_keys("name")
self.driver.find_element_by_xpath("//*[label[text()='Password']]/input").send_keys("pass")
或者搜索元素的兄弟输入:
self.driver.find_element_by_xpath("//label[text()='Username']/following-sibling::input[1]").send_keys("pass")
self.driver.find_element_by_xpath("//label[text()='Password']/following-sibling::input[1]").send_keys("pass")
答案 3 :(得分:-1)
您可以使用此伪xpath获取它:
//*[@name='username']
然后:
//*[@name='password']
&#34;移动&#34;,您可以按照以下模式使用您的代码实现: