使用XPATH / Send_Keys更改元素属性 - Selenium Python

时间:2017-06-29 17:29:39

标签: python html xml selenium xpath

enter image description here我正在编写一个程序来从网站收集数据,但是在程序中的某些时候我需要在文本框中输入电子邮件和密码。我试图去的路线是使用driver.execute_script来更改底层HTML,但是我很难将该命令与我用来查找元素的XPATH值连接起来。我知道这里有一些线程可以处理类似的问题,但是我完全找不到使用XPATH的线程。任何帮助都会非常感激,因为我完全被困在这里。

下面是我尝试更改的HTML行,以及与文本框关联的XPATH值。

XPATH值

/html/body/center/div[4]/table[2]/tbody/tr/td[4]/table[1]/tbody/tr[2]/td/table/tbody/tr[7]/td[2]/font

HTML:

<input onclick="if (this.value == 'Enter Your Name') this.value='';" onchange="if (this.value == 'Enter Your Name') this.value='';" name="name" type="text" value="Enter Your Name" style="padding-top: 2px; padding-bottom: 6px; padding-left: 4px; padding-right: 4px; width:120px; height:15px; font-size:13px; color: #000000; font-family:Trebuchet MS; background:#FFFFFF; border:1px solid #000000;">

我正在尝试将value =“Enter Your Name”替换为value =“Andrew” - 或者其他任何名称。非常感谢您提出的所有建议,请告知我们还有任何其他数据/信息。

Send_Keys脚本:

name = driver.find_element_by_xpath('//body/center/form/span/table/tbody/tr/td[1]/input')
name.clear()
name.send_keys("Andrew")

1 个答案:

答案 0 :(得分:0)

您的<input>标记包含在<iframe>中,因此您需要先将上下文切换为<iframe>

driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))

既然你在“{1}}内”,那么你的<iframe>脚本应该有效:

send_keys

最后,这里是如何切换回默认内容(name = driver.find_element_by_xpath('//body/center/form/span/table/tbody/tr/td[1]/input') name.clear() name.send_keys("Andrew") 之外):

<iframe>