我想用java / selenium点击第二个单选按钮。 Ids是动态的,我不知道为什么xpath不工作。 如果你们能告诉我它是如何工作的,那将是非常有帮助的。
HTML
import { bootstrap } from '@angular/platform-browser-dynamic';
现在代码
<div class="form-radiobutton-group group-horizontal" id="id29">
<div class="form-radiobutton-element">
<span class="form-radiobutton-wrapper">
<input class="salutation_f feedback-panel-trigger wicket-id29" id="id4" name="personaldataPanel:salutation:choices" value="radio9" type="radio">
<label for="id4" class=""></label>
</span>
<label for="id4">
Frau
</label>
</div>
<div class="form-radiobutton-element">
<span class="form-radiobutton-wrapper">
<input class="salutation_m feedback-panel-trigger wicket-id29" id="id3" name="personaldataPanel:salutation:choices" value="radio11" type="radio">
<label for="id3" class=""></label>
</span>
<label for="id3">
Herr
</label>
</div>
</div>
答案 0 :(得分:2)
单击带有标签&#34; Frau&#34;
的单选按钮WebElement m = driver.findElement(By.xpath(
"//input[@id=//label[normalize-space(.)='Frau']/@for]"));
m.click();
或者:
WebElement m = driver.findElement(By.xpath(
"id(//label[normalize-space(.)='Frau']/@for)"));
m.click();
答案 1 :(得分:2)
您可以使用radio button
找到By.xpath
,其标签文字如下: -
要点击带有标签文字Frau
driver.findElement(By.xpath("//input[../following-sibling::label[contains(.,'Frau')]]")).click();
要点击带有标签文字Herr
driver.findElement(By.xpath("//input[../following-sibling::label[contains(.,'Herr')]]")).click();
已修改: - 如果您收到其他元素会收到点击的异常,则需要实施WebDriverWait
等待DOM
上的元素显示如下: - < / p>
WebDriverWait wait = new WebDriverWait(driver, 10);
el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[../following-sibling::label[contains(.,'Herr')]]")));
el.click();
如果您仍然面临同样的问题,请尝试点击JavascriptExecutor
,如下所示: -
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el);
答案 2 :(得分:1)
driver.findElement(By.xpath("//*[text()='the label text']").click();
通过这种方式,您可以找出标签的名称,并由此单击特定的单选按钮。
答案 3 :(得分:0)
void init_shared_mem(void)
{
int shmid;
key_t key = 0x1235; //key to be passed to shmget()
int oldSize = 27;
int newSize = 28;
char * shm;
//check to see if an allocation exists
if ((shmid = shmget(key, oldSize, IPC_CREAT | 0666)) < 0)
{
perror("shmget: shmget failed");
}
//unallocate it if it does
else if (shmctl(shmid , IPC_RMID , 0) == -1)
{
perror("shmid");
}
//reallocate new section
if ((shmid = shmget(key, newSize, IPC_CREAT | 0666)) < 0)
{
perror("shmget: shmget failed");
exit(1);
}
if ((shm = shmat(shmid, NULL, 0)) == (char *) -1)
{
perror("shmat");
exit(1);
}
}