4

我正在尝试选择一个文本框并通过 selenium Web 驱动程序在其中输入文本。html如下:

</div><div>
    <input name="mLayout$ctl00$ctl00$6$16$ctl00$Database" type="text" value="Enter database name" maxlength="175" size="26" id="mLayout_ctl00_ctl00_6_16_ctl00_Database" accesskey="s" title="Go search this database" class="InputContent GhostText" onfocus="SearchBoxOnFocus(&#39;mLayout_ctl00_ctl00_6_16_ctl00_Database&#39;);" onkeypress="if(!__TextBoxOnKeyPress(&#39;mLayout$ctl00$ctl00$6$16$ctl00$GoButton&#39;,event.which)) { return false; }" />&nbsp;<input type="image" name="mLayout$ctl00$ctl00$6$16$ctl00$GoButton" id="mLayout_ctl00_ctl00_6_16_ctl00_GoButton" title="Go search database" src="http://images-statcont.westlaw.com/images/go_v602.gif" alt="Go search database" align="absmiddle" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;mLayout$ctl00$ctl00$6$16$ctl00$GoButton&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" style="height:18px;width:21px;border-width:0px;" />
</div><div>

我试过以下

driver.find_element_by_id("mLayout_ctl00_ctl00_6_16_ctl00_Database")
driver.find_element_by_name("mLayout$ctl00$ctl00$6$16$ctl00$Database")
dbElement = WebDriverWait(driver, 20).until(lambda x : x.find_element_by_id("mLayout_ctl00_ctl00_6_16_ctl00_Database"))

$ 和 _ 字符有什么特别之处吗?为什么硒不能定位这些元素?

4

3 回答 3

5

解决方案:确保您在正确的窗口中。在这一步之前的步骤中,我单击了一个打开一个新窗口的链接,并且我认为该窗口将自动成为活动窗口。

要查看哪些窗口可用,请运行:

driver.window_handles

这将返回一个列表。记下要更改到的窗口,索引为 i。然后更改窗口,运行:

driver.switch_to_window(driver.window_handles[i])
于 2012-11-05T22:24:17.903 回答
0

您的第二行中有一个额外的双引号,之后find_element_by_name(""

driver.find_element_by_name(""mLayout$ctl00$ctl00$6$16$ctl00$Database")

将其更改为

driver.find_element_by_name("mLayout$ctl00$ctl00$6$16$ctl00$Database")

并且每当不确定 abt$然后_使用单引号时,就像这样

driver.find_element_by_name('mLayout$ctl00$ctl00$6$16$ctl00$Database')
于 2012-10-20T21:31:08.897 回答
0

这个想法在下面。如果您无法通过全名定位元素,我会尝试通过名称的一部分来定位它。所以我会尝试这种方法:

A 包含“t”的元素的属性 A

xpath : //E[contains(@A,'t')]/@A ⌦ {Se: //E[contains(@A,'t')]@A}

css : NA {Se: css=E[A*='t']@A}在这里拍摄

所以它是一些东西

driver.find_element_by_xpath("input[contains(@name,'ctl00$Database')]@name")

这样,我通常会在我对定位器不自信的情况下进行验证: 在此处输入图像描述

于 2012-10-21T10:05:45.057 回答